UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

5,331 lines 518 kB
(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@angular/common'), require('ng-zorro-antd/core'), require('date-fns/format'), require('date-fns/get_iso_week'), require('date-fns/parse')) :
    typeof define === 'function' && define.amd ? define('ng-zorro-antd/i18n', ['exports', '@angular/core', 'rxjs', '@angular/common', 'ng-zorro-antd/core', 'date-fns/format', 'date-fns/get_iso_week', 'date-fns/parse'], factory) :
    (factory((global['ng-zorro-antd'] = global['ng-zorro-antd'] || {}, global['ng-zorro-antd'].i18n = {}),global.ng.core,global.rxjs,global.ng.common,global['ng-zorro-antd'].core,global.fnsFormat,global.fnsGetISOWeek,global.fnsParse));
}(this, (function (exports,i0,rxjs,i2,core,fnsFormat,fnsGetISOWeek,fnsParse) { 'use strict';

    fnsFormat = fnsFormat && fnsFormat.hasOwnProperty('default') ? fnsFormat['default'] : fnsFormat;
    fnsGetISOWeek = fnsGetISOWeek && fnsGetISOWeek.hasOwnProperty('default') ? fnsGetISOWeek['default'] : fnsGetISOWeek;
    fnsParse = fnsParse && fnsParse.hasOwnProperty('default') ? fnsParse['default'] : fnsParse;

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale = {
        today: '今天',
        now: '此刻',
        backToToday: '返回今天',
        ok: '确定',
        timeSelect: '选择时间',
        dateSelect: '选择日期',
        clear: '清除',
        month: '月',
        year: '年',
        previousMonth: '上个月 (翻页上键)',
        nextMonth: '下个月 (翻页下键)',
        monthSelect: '选择月份',
        yearSelect: '选择年份',
        decadeSelect: '选择年代',
        yearFormat: 'YYYY年',
        dayFormat: 'D日',
        dateFormat: 'YYYY年M月D日',
        dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',
        previousYear: '上一年 (Control键加左方向键)',
        nextYear: '下一年 (Control键加右方向键)',
        previousDecade: '上一年代',
        nextDecade: '下一年代',
        previousCentury: '上一世纪',
        nextCentury: '下一世纪'
    };

    /*! *****************************************************************************
    Copyright (c) Microsoft Corporation. All rights reserved.
    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
    this file except in compliance with the License. You may obtain a copy of the
    License at http://www.apache.org/licenses/LICENSE-2.0

    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    MERCHANTABLITY OR NON-INFRINGEMENT.

    See the Apache Version 2.0 License for specific language governing permissions
    and limitations under the License.
    ***************************************************************************** */
    /* global Reflect, Promise */
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b)
                if (b.hasOwnProperty(p))
                    d[p] = b[p]; };
        return extendStatics(d, b);
    };
    function __extends(d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    }
    var __assign = function () {
        __assign = Object.assign || function __assign(t) {
            for (var s, i = 1, n = arguments.length; i < n; i++) {
                s = arguments[i];
                for (var p in s)
                    if (Object.prototype.hasOwnProperty.call(s, p))
                        t[p] = s[p];
            }
            return t;
        };
        return __assign.apply(this, arguments);
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale = {
        placeholder: '请选择时间'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var locale$1 = {
        lang: __assign({ placeholder: '请选择日期', rangePlaceholder: ['开始日期', '结束日期'] }, CalendarLocale),
        timePickerLocale: __assign({}, locale)
    };
    // should add whitespace between char in Button
    locale$1.lang.ok = '确 定';

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination = {
        // Options.jsx
        items_per_page: '条/页',
        jump_to: '跳至',
        jump_to_confirm: '确定',
        page: '页',
        // Pagination.jsx
        prev_page: '上一页',
        next_page: '下一页',
        prev_5: '向前 5 页',
        next_5: '向后 5 页',
        prev_3: '向前 3 页',
        next_3: '向后 3 页'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var zh_CN = {
        locale: 'zh-cn',
        Pagination: Pagination,
        DatePicker: locale$1,
        TimePicker: locale,
        Calendar: CalendarLocale,
        // locales for all comoponents
        global: {
            placeholder: '请选择'
        },
        Table: {
            filterTitle: '筛选',
            filterConfirm: '确定',
            filterReset: '重置',
            selectAll: '全选当页',
            selectInvert: '反选当页',
            sortTitle: '排序'
        },
        Modal: {
            okText: '确定',
            cancelText: '取消',
            justOkText: '知道了'
        },
        Popconfirm: {
            cancelText: '取消',
            okText: '确定'
        },
        Transfer: {
            searchPlaceholder: '请输入搜索内容',
            itemUnit: '项',
            itemsUnit: '项'
        },
        Upload: {
            uploading: '文件上传中',
            removeFile: '删除文件',
            uploadError: '上传错误',
            previewFile: '预览文件'
        },
        Empty: {
            description: '暂无数据'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var NZ_I18N = new i0.InjectionToken('nz-i18n');
    /**
     * Locale for date operations, should import from date-fns, see example: https://github.com/date-fns/date-fns/blob/v1.30.1/src/locale/zh_cn/index.js
     * @type {?}
     */
    var NZ_DATE_LOCALE = new i0.InjectionToken('nz-date-locale');

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var NzI18nService = /** @class */ (function () {
        function NzI18nService(locale, dateLocale) {
            this._change = new rxjs.BehaviorSubject(this._locale);
            this.setLocale(locale || zh_CN);
            this.setDateLocale(dateLocale || null);
        }
        Object.defineProperty(NzI18nService.prototype, "localeChange", {
            get: /**
             * @return {?}
             */ function () {
                return this._change.asObservable();
            },
            enumerable: true,
            configurable: true
        });
        // [NOTE] Performance issue: this method may called by every change detections
        // TODO: cache more deeply paths for performance
        /* tslint:disable-next-line:no-any */
        // [NOTE] Performance issue: this method may called by every change detections
        // TODO: cache more deeply paths for performance
        /* tslint:disable-next-line:no-any */
        /**
         * @param {?} path
         * @param {?=} data
         * @return {?}
         */
        NzI18nService.prototype.translate =
            // [NOTE] Performance issue: this method may called by every change detections
            // TODO: cache more deeply paths for performance
            /* tslint:disable-next-line:no-any */
            /**
             * @param {?} path
             * @param {?=} data
             * @return {?}
             */
            function (path, data) {
                // this._logger.debug(`[NzI18nService] Translating(${this._locale.locale}): ${path}`);
                /** @type {?} */
                var content = ( /** @type {?} */(this._getObjectPath(this._locale, path)));
                if (typeof content === 'string') {
                    if (data) {
                        Object.keys(data).forEach(( /**
                         * @param {?} key
                         * @return {?}
                         */function (key) { return (content = content.replace(new RegExp("%" + key + "%", 'g'), data[key])); }));
                    }
                    return content;
                }
                return path;
            };
        /**
         * Set/Change current locale globally throughout the WHOLE application
         * [NOTE] If called at runtime, rendered interface may not change along with the locale change (because this do not trigger another render schedule)
         * @param locale The translating letters
         */
        /**
         * Set/Change current locale globally throughout the WHOLE application
         * [NOTE] If called at runtime, rendered interface may not change along with the locale change (because this do not trigger another render schedule)
         * @param {?} locale The translating letters
         * @return {?}
         */
        NzI18nService.prototype.setLocale = /**
         * Set/Change current locale globally throughout the WHOLE application
         * [NOTE] If called at runtime, rendered interface may not change along with the locale change (because this do not trigger another render schedule)
         * @param {?} locale The translating letters
         * @return {?}
         */
            function (locale) {
                if (this._locale && this._locale.locale === locale.locale) {
                    return;
                }
                this._locale = locale;
                this._change.next(locale);
            };
        /**
         * @return {?}
         */
        NzI18nService.prototype.getLocale = /**
         * @return {?}
         */
            function () {
                return this._locale;
            };
        /**
         * @return {?}
         */
        NzI18nService.prototype.getLocaleId = /**
         * @return {?}
         */
            function () {
                return this._locale ? this._locale.locale : '';
            };
        /**
         * @param {?} dateLocale
         * @return {?}
         */
        NzI18nService.prototype.setDateLocale = /**
         * @param {?} dateLocale
         * @return {?}
         */
            function (dateLocale) {
                this.dateLocale = dateLocale;
            };
        /**
         * @return {?}
         */
        NzI18nService.prototype.getDateLocale = /**
         * @return {?}
         */
            function () {
                return this.dateLocale;
            };
        /**
         * Get locale data
         * @param path dot paths for finding exist value from locale data, eg. "a.b.c"
         * @param defaultValue default value if the result is not "truthy"
         */
        // tslint:disable-next-line:no-any
        /**
         * Get locale data
         * @param {?=} path dot paths for finding exist value from locale data, eg. "a.b.c"
         * @param {?=} defaultValue default value if the result is not "truthy"
         * @return {?}
         */
        // tslint:disable-next-line:no-any
        NzI18nService.prototype.getLocaleData = /**
         * Get locale data
         * @param {?=} path dot paths for finding exist value from locale data, eg. "a.b.c"
         * @param {?=} defaultValue default value if the result is not "truthy"
         * @return {?}
         */
            // tslint:disable-next-line:no-any
            function (path, defaultValue) {
                /** @type {?} */
                var result = path ? this._getObjectPath(this._locale, path) : this._locale;
                return result || defaultValue;
            };
        // tslint:disable-next-line:no-any
        // tslint:disable-next-line:no-any
        /**
         * @private
         * @param {?} obj
         * @param {?} path
         * @return {?}
         */
        NzI18nService.prototype._getObjectPath =
            // tslint:disable-next-line:no-any
            /**
             * @private
             * @param {?} obj
             * @param {?} path
             * @return {?}
             */
            function (obj, path) {
                /** @type {?} */
                var res = obj;
                /** @type {?} */
                var paths = path.split('.');
                /** @type {?} */
                var depth = paths.length;
                /** @type {?} */
                var index = 0;
                while (res && index < depth) {
                    res = res[paths[index++]];
                }
                return index === depth ? res : null;
            };
        NzI18nService.decorators = [
            { type: i0.Injectable, args: [{
                        providedIn: 'root'
                    },] }
        ];
        /** @nocollapse */
        NzI18nService.ctorParameters = function () {
            return [
                { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [NZ_I18N,] }] },
                { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [NZ_DATE_LOCALE,] }] }
            ];
        };
        /** @nocollapse */ NzI18nService.ngInjectableDef = i0.defineInjectable({ factory: function NzI18nService_Factory() { return new NzI18nService(i0.inject(NZ_I18N, 8), i0.inject(NZ_DATE_LOCALE, 8)); }, token: NzI18nService, providedIn: "root" });
        return NzI18nService;
    }());

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var NzI18nPipe = /** @class */ (function () {
        function NzI18nPipe(_locale) {
            this._locale = _locale;
        }
        /**
         * @param {?} path
         * @param {?=} keyValue
         * @return {?}
         */
        NzI18nPipe.prototype.transform = /**
         * @param {?} path
         * @param {?=} keyValue
         * @return {?}
         */
            function (path, keyValue) {
                return this._locale.translate(path, keyValue);
            };
        NzI18nPipe.decorators = [
            { type: i0.Pipe, args: [{
                        name: 'nzI18n'
                    },] }
        ];
        /** @nocollapse */
        NzI18nPipe.ctorParameters = function () {
            return [
                { type: NzI18nService }
            ];
        };
        return NzI18nPipe;
    }());

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var NzI18nModule = /** @class */ (function () {
        function NzI18nModule() {
        }
        NzI18nModule.decorators = [
            { type: i0.NgModule, args: [{
                        imports: [core.LoggerModule],
                        declarations: [NzI18nPipe],
                        exports: [NzI18nPipe],
                        providers: [i2.DatePipe]
                    },] }
        ];
        return NzI18nModule;
    }());

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var NZ_DATE_CONFIG = new i0.InjectionToken('date-config');
    /** @type {?} */
    var NZ_DATE_CONFIG_DEFAULT = {
        firstDayOfWeek: undefined
    };
    /**
     * @param {?} config
     * @return {?}
     */
    function mergeDateConfig(config) {
        return __assign({}, NZ_DATE_CONFIG_DEFAULT, config);
    }

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @param {?} injector
     * @param {?} config
     * @param {?} datePipe
     * @return {?}
     */
    function DATE_HELPER_SERVICE_FACTORY(injector, config, datePipe) {
        /** @type {?} */
        var i18n = injector.get(NzI18nService);
        return i18n.getDateLocale()
            ? new DateHelperByDateFns(i18n, config)
            : new DateHelperByDatePipe(i18n, config, datePipe);
    }
    /**
     * Abstract DateHelperService(Token via Class)
     * Compatibility: compact for original usage by default which using DatePipe
     * @abstract
     */
    var DateHelperService = /** @class */ (function () {
        function DateHelperService(i18n, config) {
            this.i18n = i18n;
            this.config = config;
            this.relyOnDatePipe = this instanceof DateHelperByDatePipe; // Indicate whether this service is rely on DatePipe
            this.config = mergeDateConfig(this.config);
        }
        /**
         * @param {?} text
         * @return {?}
         */
        DateHelperService.prototype.parseDate = /**
         * @param {?} text
         * @return {?}
         */
            function (text) {
                if (!text) {
                    return;
                }
                return fnsParse(text);
            };
        /**
         * @param {?} text
         * @return {?}
         */
        DateHelperService.prototype.parseTime = /**
         * @param {?} text
         * @return {?}
         */
            function (text) {
                if (!text) {
                    return;
                }
                return fnsParse("1970-01-01 " + text);
            };
        DateHelperService.decorators = [
            { type: i0.Injectable, args: [{
                        providedIn: 'root',
                        useFactory: DATE_HELPER_SERVICE_FACTORY,
                        deps: [i0.Injector, [new i0.Optional(), NZ_DATE_CONFIG], i2.DatePipe]
                    },] }
        ];
        /** @nocollapse */
        DateHelperService.ctorParameters = function () {
            return [
                { type: NzI18nService },
                { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [NZ_DATE_CONFIG,] }] }
            ];
        };
        /** @nocollapse */ DateHelperService.ngInjectableDef = i0.defineInjectable({ factory: function DateHelperService_Factory() { return DATE_HELPER_SERVICE_FACTORY(i0.inject(i0.INJECTOR), i0.inject(NZ_DATE_CONFIG, 8), i0.inject(i2.DatePipe)); }, token: DateHelperService, providedIn: "root" });
        return DateHelperService;
    }());
    /**
     * DateHelper that handles date formats with date-fns
     */
    var DateHelperByDateFns = /** @class */ (function (_super) {
        __extends(DateHelperByDateFns, _super);
        function DateHelperByDateFns() {
            return _super !== null && _super.apply(this, arguments) || this;
        }
        /**
         * @param {?} date
         * @return {?}
         */
        DateHelperByDateFns.prototype.getISOWeek = /**
         * @param {?} date
         * @return {?}
         */
            function (date) {
                return fnsGetISOWeek(date);
            };
        // TODO: Use date-fns's "weekStartsOn" to support different locale when "config.firstDayOfWeek" is null
        // when v2.0 is ready: https://github.com/date-fns/date-fns/blob/v2.0.0-alpha.27/src/locale/en-US/index.js#L23
        // TODO: Use date-fns's "weekStartsOn" to support different locale when "config.firstDayOfWeek" is null
        // when v2.0 is ready: https://github.com/date-fns/date-fns/blob/v2.0.0-alpha.27/src/locale/en-US/index.js#L23
        /**
         * @return {?}
         */
        DateHelperByDateFns.prototype.getFirstDayOfWeek =
            // TODO: Use date-fns's "weekStartsOn" to support different locale when "config.firstDayOfWeek" is null
            // when v2.0 is ready: https://github.com/date-fns/date-fns/blob/v2.0.0-alpha.27/src/locale/en-US/index.js#L23
            /**
             * @return {?}
             */
            function () {
                return this.config.firstDayOfWeek == null ? 1 : this.config.firstDayOfWeek;
            };
        /**
         * Format a date
         * @see https://date-fns.org/docs/format#description
         * @param date Date
         * @param formatStr format string
         */
        /**
         * Format a date
         * @see https://date-fns.org/docs/format#description
         * @param {?} date Date
         * @param {?} formatStr format string
         * @return {?}
         */
        DateHelperByDateFns.prototype.format = /**
         * Format a date
         * @see https://date-fns.org/docs/format#description
         * @param {?} date Date
         * @param {?} formatStr format string
         * @return {?}
         */
            function (date, formatStr) {
                return fnsFormat(date, formatStr, { locale: this.i18n.getDateLocale() });
            };
        /** @nocollapse */ DateHelperByDateFns.ngInjectableDef = i0.defineInjectable({ factory: function DateHelperByDateFns_Factory() { return DATE_HELPER_SERVICE_FACTORY(i0.inject(i0.INJECTOR), i0.inject(NZ_DATE_CONFIG, 8), i0.inject(i2.DatePipe)); }, token: DateHelperByDateFns, providedIn: "root" });
        return DateHelperByDateFns;
    }(DateHelperService));
    /**
     * DateHelper that handles date formats with angular's date-pipe
     * [BUG] Use DatePipe may cause non-standard week bug, see: https://github.com/NG-ZORRO/ng-zorro-antd/issues/2406
     *
     * @deprecated Maybe removed in next major version due to this serious bug
     */
    var DateHelperByDatePipe = /** @class */ (function (_super) {
        __extends(DateHelperByDatePipe, _super);
        function DateHelperByDatePipe(i18n, config, datePipe) {
            var _this = _super.call(this, i18n, config) || this;
            _this.datePipe = datePipe;
            return _this;
        }
        /**
         * @param {?} date
         * @return {?}
         */
        DateHelperByDatePipe.prototype.getISOWeek = /**
         * @param {?} date
         * @return {?}
         */
            function (date) {
                return +this.format(date, 'w');
            };
        /**
         * @return {?}
         */
        DateHelperByDatePipe.prototype.getFirstDayOfWeek = /**
         * @return {?}
         */
            function () {
                if (this.config.firstDayOfWeek === undefined) {
                    /** @type {?} */
                    var locale = this.i18n.getLocaleId();
                    return locale && ['zh-cn', 'zh-tw'].indexOf(locale.toLowerCase()) > -1 ? 1 : 0;
                }
                return this.config.firstDayOfWeek;
            };
        /**
         * @param {?} date
         * @param {?} formatStr
         * @return {?}
         */
        DateHelperByDatePipe.prototype.format = /**
         * @param {?} date
         * @param {?} formatStr
         * @return {?}
         */
            function (date, formatStr) {
                return date ? ( /** @type {?} */(this.datePipe.transform(date, formatStr, undefined, this.i18n.getLocaleId()))) : '';
            };
        /**
         * Compatible translate the moment-like format pattern to angular's pattern
         * Why? For now, we need to support the existing language formats in AntD, and AntD uses the default temporal syntax.
         *
         * TODO: compare and complete all format patterns
         * Each format docs as below:
         * @link https://momentjs.com/docs/#/displaying/format/
         * @link https://angular.io/api/common/DatePipe#description
         * @param format input format pattern
         */
        /**
         * Compatible translate the moment-like format pattern to angular's pattern
         * Why? For now, we need to support the existing language formats in AntD, and AntD uses the default temporal syntax.
         *
         * TODO: compare and complete all format patterns
         * Each format docs as below:
         * @link https://momentjs.com/docs/#/displaying/format/ / https://angular.io/api/common/DatePipe#description
         * @param {?} format input format pattern
         * @return {?}
         */
        DateHelperByDatePipe.prototype.transCompatFormat = /**
         * Compatible translate the moment-like format pattern to angular's pattern
         * Why? For now, we need to support the existing language formats in AntD, and AntD uses the default temporal syntax.
         *
         * TODO: compare and complete all format patterns
         * Each format docs as below:
         * @link https://momentjs.com/docs/#/displaying/format/ / https://angular.io/api/common/DatePipe#description
         * @param {?} format input format pattern
         * @return {?}
         */
            function (format) {
                return (format &&
                    format
                        .replace(/Y/g, 'y') // only support y, yy, yyy, yyyy
                        .replace(/D/g, 'd')); // d, dd represent of D, DD for momentjs, others are not support
            };
        /** @nocollapse */
        DateHelperByDatePipe.ctorParameters = function () {
            return [
                { type: NzI18nService },
                { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [NZ_DATE_CONFIG,] }] },
                { type: i2.DatePipe }
            ];
        };
        /** @nocollapse */ DateHelperByDatePipe.ngInjectableDef = i0.defineInjectable({ factory: function DateHelperByDatePipe_Factory() { return DATE_HELPER_SERVICE_FACTORY(i0.inject(i0.INJECTOR), i0.inject(NZ_DATE_CONFIG, 8), i0.inject(i2.DatePipe)); }, token: DateHelperByDatePipe, providedIn: "root" });
        return DateHelperByDatePipe;
    }(DateHelperService));

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$1 = {
        today: 'اليوم',
        now: 'الأن',
        backToToday: 'العودة إلى اليوم',
        ok: 'تأكيد',
        clear: 'مسح',
        month: 'الشهر',
        year: 'السنة',
        timeSelect: 'اختيار الوقت',
        dateSelect: 'اختيار التاريخ',
        monthSelect: 'اختيار الشهر',
        yearSelect: 'اختيار السنة',
        decadeSelect: 'اختيار العقد',
        yearFormat: 'YYYY',
        dateFormat: 'M/D/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'M/D/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'الشهر السابق (PageUp)',
        nextMonth: 'الشهر التالى(PageDown)',
        previousYear: 'العام السابق (Control + left)',
        nextYear: 'العام التالى (Control + right)',
        previousDecade: 'العقد السابق',
        nextDecade: 'العقد التالى',
        previousCentury: 'القرن السابق',
        nextCentury: 'القرن التالى'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$2 = {
        placeholder: 'اختيار الوقت'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$3 = {
        lang: __assign({ placeholder: 'اختيار التاريخ', rangePlaceholder: ['البداية', 'النهاية'] }, CalendarLocale$1),
        timePickerLocale: __assign({}, locale$2)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$1 = {
        // Options.jsx
        items_per_page: '/ الصفحة',
        jump_to: 'الذهاب إلى',
        jump_to_confirm: 'تأكيد',
        page: '',
        // Pagination.jsx
        prev_page: 'الصفحة السابقة',
        next_page: 'الصفحة التالية',
        prev_5: 'خمس صفحات سابقة',
        next_5: 'خمس صفحات تالية',
        prev_3: 'ثلاث صفحات سابقة',
        next_3: 'ثلاث صفحات تالية'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var ar_EG = {
        locale: 'ar',
        Pagination: Pagination$1,
        DatePicker: locale$3,
        TimePicker: locale$2,
        Calendar: CalendarLocale$1,
        Table: {
            filterTitle: 'الفلاتر',
            filterConfirm: 'تأكيد',
            filterReset: 'إعادة ضبط',
            selectAll: 'اختيار الكل',
            selectInvert: 'إلغاء الاختيار'
        },
        Modal: {
            okText: 'تأكيد',
            cancelText: 'إلغاء',
            justOkText: 'تأكيد'
        },
        Popconfirm: {
            okText: 'تأكيد',
            cancelText: 'إلغاء'
        },
        Transfer: {
            searchPlaceholder: 'ابحث هنا',
            itemUnit: 'عنصر',
            itemsUnit: 'عناصر'
        },
        Upload: {
            uploading: 'جاري الرفع...',
            removeFile: 'احذف الملف',
            uploadError: 'مشكلة فى الرفع',
            previewFile: 'استعرض الملف'
        },
        Empty: {
            description: 'لا توجد بيانات'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$2 = {
        today: 'Днес',
        now: 'Сега',
        backToToday: 'Към днес',
        ok: 'Добре',
        clear: 'Изчистване',
        month: 'Месец',
        year: 'Година',
        timeSelect: 'Избор на час',
        dateSelect: 'Избор на дата',
        monthSelect: 'Избор на месец',
        yearSelect: 'Избор на година',
        decadeSelect: 'Десетилетие',
        yearFormat: 'YYYY',
        dateFormat: 'D M YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D M YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Предишен месец (PageUp)',
        nextMonth: 'Следващ месец (PageDown)',
        previousYear: 'Последна година (Control + left)',
        nextYear: 'Следваща година (Control + right)',
        previousDecade: 'Предишно десетилетие',
        nextDecade: 'Следващо десетилетие',
        previousCentury: 'Последен век',
        nextCentury: 'Следващ век'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$4 = {
        placeholder: 'Избор на час'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$5 = {
        lang: __assign({ placeholder: 'Избор на дата', rangePlaceholder: ['Начална', 'Крайна'] }, CalendarLocale$2),
        timePickerLocale: __assign({}, locale$4)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$2 = {
        // Options.jsx
        items_per_page: '/ страница',
        jump_to: 'Към',
        jump_to_confirm: 'потвърждавам',
        page: '',
        // Pagination.jsx
        prev_page: 'Предишна страница',
        next_page: 'Следваща страница',
        prev_5: 'Предишни 5 страници',
        next_5: 'Следващи 5 страници',
        prev_3: 'Предишни 3 страници',
        next_3: 'Следващи 3 страници'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var bg_BG = {
        locale: 'bg',
        Pagination: Pagination$2,
        DatePicker: locale$5,
        TimePicker: locale$4,
        Calendar: CalendarLocale$2,
        Table: {
            filterTitle: 'Филтриране',
            filterConfirm: 'Добре',
            filterReset: 'Нулриане',
            selectAll: 'Избор на текуща страница',
            selectInvert: 'Обръщане'
        },
        Modal: {
            okText: 'Добре',
            cancelText: 'Отказ',
            justOkText: 'Добре'
        },
        Popconfirm: {
            okText: 'Добре',
            cancelText: 'Отказ'
        },
        Transfer: {
            searchPlaceholder: 'Търсене',
            itemUnit: 'избор',
            itemsUnit: 'избори'
        },
        Upload: {
            uploading: 'Качване...',
            removeFile: 'Премахване',
            uploadError: 'Грешка при качването',
            previewFile: 'Преглед'
        },
        Empty: {
            description: 'Няма данни'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$3 = {
        today: 'Avui',
        now: 'Ara',
        backToToday: 'Tornar a avui',
        ok: 'Acceptar',
        clear: 'Netejar',
        month: 'Mes',
        year: 'Any',
        timeSelect: 'Seleccionar hora',
        dateSelect: 'Seleccionar data',
        monthSelect: 'Escollir un mes',
        yearSelect: 'Escollir un any',
        decadeSelect: 'Escollir una dècada',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Mes anterior (PageUp)',
        nextMonth: 'Mes següent (PageDown)',
        previousYear: 'Any anterior (Control + left)',
        nextYear: 'Mes següent (Control + right)',
        previousDecade: 'Dècada anterior',
        nextDecade: 'Dècada següent',
        previousCentury: 'Segle anterior',
        nextCentury: 'Segle següent'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$6 = {
        placeholder: 'Seleccionar hora'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$7 = {
        lang: __assign({ placeholder: 'Seleccionar data', rangePlaceholder: ['Data inicial', 'Data final'] }, CalendarLocale$3),
        timePickerLocale: __assign({}, locale$6)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$3 = {
        // Options.jsx
        items_per_page: '/ pàgina',
        jump_to: 'Anar a',
        jump_to_confirm: 'Confirmar',
        page: '',
        // Pagination.jsx
        prev_page: 'Pàgina prèvia',
        next_page: 'Pàgina següent',
        prev_5: '5 pàgines prèvies',
        next_5: '5 pàgines següents',
        prev_3: '3 pàgines prèvies',
        next_3: '3 pàgines següents'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var ca_ES = {
        locale: 'ca',
        Pagination: Pagination$3,
        DatePicker: locale$7,
        TimePicker: locale$6,
        Calendar: CalendarLocale$3,
        Table: {
            filterTitle: 'Filtrar Menu',
            filterConfirm: 'OK',
            filterReset: 'Restablir',
            selectAll: 'Seleccionar tot',
            selectInvert: 'Invertir selecció'
        },
        Modal: {
            okText: 'Acceptar',
            cancelText: 'Cancel·lar',
            justOkText: 'Acceptar'
        },
        Popconfirm: {
            okText: 'Acceptar',
            cancelText: 'Cancel·lar'
        },
        Transfer: {
            searchPlaceholder: 'Cercar aquí',
            itemUnit: 'element',
            itemsUnit: 'elements'
        },
        Upload: {
            uploading: 'Pujant...',
            removeFile: 'Eliminar fitxer',
            uploadError: 'Error al pujar el fitxer',
            previewFile: 'Vista prèvia'
        },
        Empty: {
            description: 'No hi ha dades'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$4 = {
        today: 'Dnes',
        now: 'Nyní',
        backToToday: 'Zpět na dnešek',
        ok: 'Ok',
        clear: 'Vymazat',
        month: 'Měsíc',
        year: 'Rok',
        timeSelect: 'Vybrat čas',
        dateSelect: 'Vybrat datum',
        monthSelect: 'Vyberte měsíc',
        yearSelect: 'Vyberte rok',
        decadeSelect: 'Vyberte dekádu',
        yearFormat: 'YYYY',
        dateFormat: 'D.M.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D.M.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Předchozí měsíc (PageUp)',
        nextMonth: 'Následující (PageDown)',
        previousYear: 'Předchozí rok (Control + left)',
        nextYear: 'Následující rok (Control + right)',
        previousDecade: 'Předchozí dekáda',
        nextDecade: 'Následující dekáda',
        previousCentury: 'Předchozí století',
        nextCentury: 'Následující století'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$8 = {
        placeholder: 'Vybrat čas'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$9 = {
        lang: __assign({ placeholder: 'Vybrat datum', rangePlaceholder: ['Od', 'Do'] }, CalendarLocale$4),
        timePickerLocale: __assign({}, locale$8)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$4 = {
        // Options.jsx
        items_per_page: '/ strana',
        jump_to: 'Přejít',
        jump_to_confirm: 'potvrdit',
        page: '',
        // Pagination.jsx
        prev_page: 'Předchozí strana',
        next_page: 'Následující strana',
        prev_5: 'Předchozích 5 stran',
        next_5: 'Následujících 5 stran',
        prev_3: 'Předchozí 3 strany',
        next_3: 'Následující 3 strany'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var cs_CZ = {
        locale: 'cs',
        Pagination: Pagination$4,
        DatePicker: locale$9,
        TimePicker: locale$8,
        Calendar: CalendarLocale$4,
        Table: {
            filterTitle: 'Filtr',
            filterConfirm: 'Potvrdit',
            filterReset: 'Obnovit'
        },
        Modal: {
            okText: 'Ok',
            cancelText: 'Storno',
            justOkText: 'Ok'
        },
        Popconfirm: {
            okText: 'Ok',
            cancelText: 'Storno'
        },
        Transfer: {
            searchPlaceholder: 'Vyhledávání',
            itemUnit: 'položka',
            itemsUnit: 'položek'
        },
        Upload: {
            uploading: 'Nahrávání...',
            removeFile: 'Odstranit soubor',
            uploadError: 'Chyba při nahrávání',
            previewFile: 'Zobrazit soubor'
        },
        Empty: {
            description: 'Žádná data'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$5 = {
        today: 'I dag',
        now: 'Nu',
        backToToday: 'Gå til i dag',
        ok: 'Ok',
        clear: 'Annuller',
        month: 'Måned',
        year: 'År',
        timeSelect: 'Vælg tidspunkt',
        dateSelect: 'Vælg dato',
        monthSelect: 'Vælg måned',
        yearSelect: 'Vælg år',
        decadeSelect: 'Vælg årti',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Forrige måned(PageUp)',
        nextMonth: 'Næste måned (PageDown)',
        previousYear: 'Forrige år (Control + left)',
        nextYear: 'Næste r (Control + right)',
        previousDecade: 'Forrige årti',
        nextDecade: 'Næste årti',
        previousCentury: 'Forrige århundrede',
        nextCentury: 'Næste århundrede'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$a = {
        placeholder: 'Vælg tid'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$b = {
        lang: __assign({ placeholder: 'Vælg dato', rangePlaceholder: ['Startdato', 'Slutdato'] }, CalendarLocale$5),
        timePickerLocale: __assign({}, locale$a)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$5 = {
        // Options.jsx
        items_per_page: '/ side',
        jump_to: 'Gå til',
        jump_to_confirm: 'bekræft',
        page: '',
        // Pagination.jsx
        prev_page: 'Forrige Side',
        next_page: 'Næste Side',
        prev_5: 'Forrige 5 Sider',
        next_5: 'Næste 5 Sider',
        prev_3: 'Forrige 3 Sider',
        next_3: 'Næste 3 Sider'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var da_DK = {
        locale: 'da',
        DatePicker: locale$b,
        TimePicker: locale$a,
        Calendar: CalendarLocale$5,
        Pagination: Pagination$5,
        Table: {
            filterTitle: 'Filtermenu',
            filterConfirm: 'OK',
            filterReset: 'Nulstil',
            selectAll: 'Vælg alle',
            selectInvert: 'Inverter valg'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Afbryd',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Afbryd'
        },
        Transfer: {
            searchPlaceholder: 'Søg her',
            itemUnit: 'element',
            itemsUnit: 'elementer'
        },
        Upload: {
            uploading: 'Uploader...',
            removeFile: 'Fjern fil',
            uploadError: 'Fejl ved upload',
            previewFile: 'Forhåndsvisning'
        },
        Empty: {
            description: 'Ingen data'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$6 = {
        today: 'Heute',
        now: 'Jetzt',
        backToToday: 'Zurück zu Heute',
        ok: 'OK',
        clear: 'Zurücksetzen',
        month: 'Monat',
        year: 'Jahr',
        timeSelect: 'Zeit wählen',
        dateSelect: 'Datum wählen',
        monthSelect: 'Wähle einen Monat',
        yearSelect: 'Wähle ein Jahr',
        decadeSelect: 'Wähle ein Jahrzehnt',
        yearFormat: 'YYYY',
        dateFormat: 'D.M.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D.M.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Vorheriger Monat (PageUp)',
        nextMonth: 'Nächster Monat (PageDown)',
        previousYear: 'Vorheriges Jahr (Ctrl + left)',
        nextYear: 'Nächstes Jahr (Ctrl + right)',
        previousDecade: 'Vorheriges Jahrzehnt',
        nextDecade: 'Nächstes Jahrzehnt',
        previousCentury: 'Vorheriges Jahrhundert',
        nextCentury: 'Nächstes Jahrhundert'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$c = {
        placeholder: 'Zeit auswählen'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$d = {
        lang: __assign({ placeholder: 'Datum auswählen', rangePlaceholder: ['Startdatum', 'Enddatum'] }, CalendarLocale$6),
        timePickerLocale: __assign({}, locale$c)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$6 = {
        // Options.jsx
        items_per_page: '/ Seite',
        jump_to: 'Gehe zu',
        jump_to_confirm: 'bestätigen',
        page: '',
        // Pagination.jsx
        prev_page: 'Vorherige Seite',
        next_page: 'Nächste Seite',
        prev_5: '5 Seiten zurück',
        next_5: '5 Seiten vor',
        prev_3: '3 Seiten zurück',
        next_3: '3 Seiten vor'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var de_DE = {
        locale: 'de',
        Pagination: Pagination$6,
        DatePicker: locale$d,
        TimePicker: locale$c,
        Calendar: CalendarLocale$6,
        Table: {
            filterTitle: 'Filter-Menü',
            filterConfirm: 'OK',
            filterReset: 'Zurücksetzen',
            selectAll: 'Selektiere Alle',
            selectInvert: 'Selektion Invertieren'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Abbrechen',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Abbrechen'
        },
        Transfer: {
            searchPlaceholder: 'Suchen',
            itemUnit: 'Eintrag',
            itemsUnit: 'Einträge'
        },
        Upload: {
            uploading: 'Hochladen...',
            removeFile: 'Datei entfernen',
            uploadError: 'Fehler beim Hochladen',
            previewFile: 'Dateivorschau'
        },
        Empty: {
            description: 'Keine Daten'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$7 = {
        today: 'Σήμερα',
        now: 'Τώρα',
        backToToday: 'Πίσω στη σημερινή μέρα',
        ok: 'Ok',
        clear: 'Καθαρισμός',
        month: 'Μήνας',
        year: 'Έτος',
        timeSelect: 'Επιλογή ώρας',
        dateSelect: 'Επιλογή ημερομηνίας',
        monthSelect: 'Επιλογή μήνα',
        yearSelect: 'Επιλογή έτους',
        decadeSelect: 'Επιλογή δεκαετίας',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Προηγούμενος μήνας (PageUp)',
        nextMonth: 'Επόμενος μήνας (PageDown)',
        previousYear: 'Προηγούμενο έτος (Control + αριστερά)',
        nextYear: 'Επόμενο έτος (Control + δεξιά)',
        previousDecade: 'Προηγούμενη δεκαετία',
        nextDecade: 'Επόμενη δεκαετία',
        previousCentury: 'Προηγούμενος αιώνας',
        nextCentury: 'Επόμενος αιώνας'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$e = {
        placeholder: 'Επιλέξτε ώρα'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$f = {
        lang: __assign({ placeholder: 'Επιλέξτε ημερομηνία', rangePlaceholder: ['Αρχική ημερομηνία', 'Τελική ημερομηνία'] }, CalendarLocale$7),
        timePickerLocale: __assign({}, locale$e)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$7 = {
        // Options.jsx
        items_per_page: '/ σελίδα',
        jump_to: 'Μετάβαση',
        jump_to_confirm: 'επιβεβαιώνω',
        page: '',
        // Pagination.jsx
        prev_page: 'Προηγούμενη Σελίδα',
        next_page: 'Επόμενη Σελίδα',
        prev_5: 'Προηγούμενες 5 Σελίδες',
        next_5: 'Επόμενες 5 σελίδες',
        prev_3: 'Προηγούμενες 3 Σελίδες',
        next_3: 'Επόμενες 3 Σελίδες'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var el_GR = {
        locale: 'el',
        Pagination: Pagination$7,
        DatePicker: locale$f,
        TimePicker: locale$e,
        Calendar: CalendarLocale$7,
        Table: {
            filterTitle: 'Μενού φίλτρων',
            filterConfirm: 'ΟΚ',
            filterReset: 'Επαναφορά',
            selectAll: 'Επιλογή τρέχουσας σελίδας',
            selectInvert: 'Αντιστροφή τρέχουσας σελίδας'
        },
        Modal: {
            okText: 'ΟΚ',
            cancelText: 'Άκυρο',
            justOkText: 'ΟΚ'
        },
        Popconfirm: {
            okText: 'ΟΚ',
            cancelText: 'Άκυρο'
        },
        Transfer: {
            searchPlaceholder: 'Αναζήτηση',
            itemUnit: 'αντικείμενο',
            itemsUnit: 'αντικείμενα'
        },
        Upload: {
            uploading: 'Μεταφόρτωση...',
            removeFile: 'Αφαίρεση αρχείου',
            uploadError: 'Σφάλμα μεταφόρτωσης',
            previewFile: 'Προεπισκόπηση αρχείου'
        },
        Empty: {
            description: 'Δεν υπάρχουν δεδομένα'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$8 = {
        today: 'Today',
        now: 'Now',
        backToToday: 'Back to today',
        ok: 'Ok',
        clear: 'Clear',
        month: 'Month',
        year: 'Year',
        timeSelect: 'Select time',
        dateSelect: 'Select date',
        monthSelect: 'Choose a month',
        yearSelect: 'Choose a year',
        decadeSelect: 'Choose a decade',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Previous month (PageUp)',
        nextMonth: 'Next month (PageDown)',
        previousYear: 'Last year (Control + left)',
        nextYear: 'Next year (Control + right)',
        previousDecade: 'Last decade',
        nextDecade: 'Next decade',
        previousCentury: 'Last century',
        nextCentury: 'Next century'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$g = {
        placeholder: 'Select time'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$h = {
        lang: __assign({ placeholder: 'Select date', rangePlaceholder: ['Start date', 'End date'] }, CalendarLocale$8),
        timePickerLocale: __assign({}, locale$g)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$8 = {
        // Options.jsx
        items_per_page: '/ page',
        jump_to: 'Goto',
        jump_to_confirm: 'confirm',
        page: '',
        // Pagination.jsx
        prev_page: 'Previous Page',
        next_page: 'Next Page',
        prev_5: 'Previous 5 Pages',
        next_5: 'Next 5 Pages',
        prev_3: 'Previous 3 Pages',
        next_3: 'Next 3 Pages'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var en_GB = {
        locale: 'en-gb',
        Pagination: Pagination$8,
        DatePicker: locale$h,
        TimePicker: locale$g,
        Calendar: CalendarLocale$8,
        Table: {
            filterTitle: 'Filter menu',
            filterConfirm: 'OK',
            filterReset: 'Reset',
            selectAll: 'Select current page',
            selectInvert: 'Invert current page'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Cancel',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Cancel'
        },
        Transfer: {
            searchPlaceholder: 'Search here',
            itemUnit: 'item',
            itemsUnit: 'items'
        },
        Upload: {
            uploading: 'Uploading...',
            removeFile: 'Remove file',
            uploadError: 'Upload error',
            previewFile: 'Preview file'
        },
        Empty: {
            description: 'No data'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$9 = {
        today: 'Today',
        now: 'Now',
        backToToday: 'Back to today',
        ok: 'Ok',
        clear: 'Clear',
        month: 'Month',
        year: 'Year',
        timeSelect: 'Select time',
        dateSelect: 'Select date',
        monthSelect: 'Choose a month',
        yearSelect: 'Choose a year',
        decadeSelect: 'Choose a decade',
        yearFormat: 'YYYY',
        dateFormat: 'M/D/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'M/D/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Previous month (PageUp)',
        nextMonth: 'Next month (PageDown)',
        previousYear: 'Last year (Control + left)',
        nextYear: 'Next year (Control + right)',
        previousDecade: 'Last decade',
        nextDecade: 'Next decade',
        previousCentury: 'Last century',
        nextCentury: 'Next century'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$i = {
        placeholder: 'Select time'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$j = {
        lang: __assign({ placeholder: 'Select date', rangePlaceholder: ['Start date', 'End date'] }, CalendarLocale$9),
        timePickerLocale: __assign({}, locale$i)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$9 = {
        // Options.jsx
        items_per_page: '/ page',
        jump_to: 'Goto',
        jump_to_confirm: 'confirm',
        page: '',
        // Pagination.jsx
        prev_page: 'Previous Page',
        next_page: 'Next Page',
        prev_5: 'Previous 5 Pages',
        next_5: 'Next 5 Pages',
        prev_3: 'Previous 3 Pages',
        next_3: 'Next 3 Pages'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var en_US = {
        locale: 'en',
        Pagination: Pagination$9,
        DatePicker: locale$j,
        TimePicker: locale$i,
        Calendar: CalendarLocale$9,
        global: {
            placeholder: 'Please select'
        },
        Table: {
            filterTitle: 'Filter menu',
            filterConfirm: 'OK',
            filterReset: 'Reset',
            selectAll: 'Select current page',
            selectInvert: 'Invert current page',
            sortTitle: 'Sort'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Cancel',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Cancel'
        },
        Transfer: {
            titles: ['', ''],
            searchPlaceholder: 'Search here',
            itemUnit: 'item',
            itemsUnit: 'items'
        },
        Upload: {
            uploading: 'Uploading...',
            removeFile: 'Remove file',
            uploadError: 'Upload error',
            previewFile: 'Preview file'
        },
        Empty: {
            description: 'No Data'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$a = {
        today: 'Hoy',
        now: 'Ahora',
        backToToday: 'Volver a hoy',
        ok: 'Aceptar',
        clear: 'Limpiar',
        month: 'Mes',
        year: 'Año',
        timeSelect: 'Seleccionar hora',
        dateSelect: 'Seleccionar fecha',
        monthSelect: 'Elegir un mes',
        yearSelect: 'Elegir un año',
        decadeSelect: 'Elegir una década',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Mes anterior (PageUp)',
        nextMonth: 'Mes siguiente (PageDown)',
        previousYear: 'Año anterior (Control + left)',
        nextYear: 'Año siguiente (Control + right)',
        previousDecade: 'Década anterior',
        nextDecade: 'Década siguiente',
        previousCentury: 'Siglo anterior',
        nextCentury: 'Siglo siguiente'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$k = {
        placeholder: 'Seleccionar hora'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$l = {
        lang: __assign({ placeholder: 'Seleccionar fecha', rangePlaceholder: ['Fecha inicial', 'Fecha final'] }, CalendarLocale$a),
        timePickerLocale: __assign({}, locale$k)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$a = {
        // Options.jsx
        items_per_page: '/ página',
        jump_to: 'Ir a',
        jump_to_confirm: 'confirmar',
        page: '',
        // Pagination.jsx
        prev_page: 'Página anterior',
        next_page: 'Página siguiente',
        prev_5: '5 páginas previas',
        next_5: '5 páginas siguientes',
        prev_3: '3 páginas previas',
        next_3: '3 páginas siguientes'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var es_ES = {
        locale: 'es',
        Pagination: Pagination$a,
        DatePicker: locale$l,
        TimePicker: locale$k,
        Calendar: CalendarLocale$a,
        Table: {
            filterTitle: 'Filtrar menú',
            filterConfirm: 'Aceptar',
            filterReset: 'Reiniciar',
            selectAll: 'Seleccionar todo',
            selectInvert: 'Invertir selección'
        },
        Modal: {
            okText: 'Aceptar',
            cancelText: 'Cancelar',
            justOkText: 'Aceptar'
        },
        Popconfirm: {
            okText: 'Aceptar',
            cancelText: 'Cancelar'
        },
        Transfer: {
            searchPlaceholder: 'Buscar aquí',
            itemUnit: 'elemento',
            itemsUnit: 'elementos'
        },
        Upload: {
            uploading: 'Subiendo...',
            removeFile: 'Eliminar archivo',
            uploadError: 'Error al subir el archivo',
            previewFile: 'Vista previa'
        },
        Empty: {
            description: 'No hay datos'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$b = {
        today: 'Täna',
        now: 'Praegu',
        backToToday: 'Tagasi tänase juurde',
        ok: 'Ok',
        clear: 'Tühista',
        month: 'Kuu',
        year: 'Aasta',
        timeSelect: 'Vali aeg',
        dateSelect: 'Vali kuupäev',
        monthSelect: 'Vali kuu',
        yearSelect: 'Vali aasta',
        decadeSelect: 'Vali dekaad',
        yearFormat: 'YYYY',
        dateFormat: 'D.M.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D.M.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Eelmine kuu (PageUp)',
        nextMonth: 'Järgmine kuu (PageDown)',
        previousYear: 'Eelmine aasta (Control + left)',
        nextYear: 'Järgmine aasta (Control + right)',
        previousDecade: 'Eelmine dekaad',
        nextDecade: 'Järgmine dekaad',
        previousCentury: 'Eelmine sajand',
        nextCentury: 'Järgmine sajand'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$m = {
        placeholder: 'Vali aeg'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // 统一合并为完整的 Locale
    /** @type {?} */
    var locale$n = {
        lang: __assign({ placeholder: 'Vali kuupäev', rangePlaceholder: ['Algus kuupäev', 'Lõpu kuupäev'] }, CalendarLocale$b),
        timePickerLocale: __assign({}, locale$m)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$b = {
        // Options.jsx
        items_per_page: '/ leheküljel',
        jump_to: 'Hüppa',
        jump_to_confirm: 'Kinnitage',
        page: '',
        // Pagination.jsx
        prev_page: 'Eelmine leht',
        next_page: 'Järgmine leht',
        prev_5: 'Eelmised 5 lehekülge',
        next_5: 'Järgmised 5 lehekülge',
        prev_3: 'Eelmised 3 lehekülge',
        next_3: 'Järgmised 3 lehekülge'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var et_EE = {
        locale: 'et',
        Pagination: Pagination$b,
        DatePicker: locale$n,
        TimePicker: locale$m,
        Calendar: CalendarLocale$b,
        Table: {
            filterTitle: 'Filtri menüü',
            filterConfirm: 'OK',
            filterReset: 'Nulli',
            selectAll: 'Vali kõik',
            selectInvert: 'Inverteeri valik'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Tühista',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Tühista'
        },
        Transfer: {
            searchPlaceholder: 'Otsi siit',
            itemUnit: 'kogus',
            itemsUnit: 'kogus'
        },
        Upload: {
            uploading: 'Üleslaadimine...',
            removeFile: 'Eemalda fail',
            uploadError: 'Üleslaadimise tõrge',
            previewFile: 'Faili eelvaade'
        },
        Empty: {
            description: 'Andmed puuduvad'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$c = {
        today: 'امروز',
        now: 'اکنون',
        backToToday: 'بازگشت به روز',
        ok: 'باشه',
        clear: 'پاک کردن',
        month: 'ماه',
        year: 'سال',
        timeSelect: 'انتخاب زمان',
        dateSelect: 'انتخاب تاریخ',
        monthSelect: 'یک ماه را انتخاب کنید',
        yearSelect: 'یک سال را انتخاب کنید',
        decadeSelect: 'یک دهه را انتخاب کنید',
        yearFormat: 'YYYY',
        dateFormat: 'M/D/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'M/D/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'ماه قبل (PageUp)',
        nextMonth: 'ماه بعد (PageDown)',
        previousYear: 'سال قبل (Control + left)',
        nextYear: 'سال بعد (Control + right)',
        previousDecade: 'دهه قبل',
        nextDecade: 'دهه بعد',
        previousCentury: 'قرن قبل',
        nextCentury: 'قرن بعد'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$o = {
        placeholder: 'انتخاب زمان'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$p = {
        lang: __assign({ placeholder: 'انتخاب تاریخ', rangePlaceholder: ['تاریخ شروع', 'تاریخ پایان'] }, CalendarLocale$c),
        timePickerLocale: __assign({}, locale$o)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$c = {
        // Options.jsx
        items_per_page: '/ صفحه',
        jump_to: 'برو به',
        jump_to_confirm: 'تایید',
        page: '',
        // Pagination.jsx
        prev_page: 'صفحه قبلی',
        next_page: 'صفحه بعدی',
        prev_5: '۵ صفحه قبلی',
        next_5: '۵ صفحه بعدی',
        prev_3: '۳ صفحه قبلی',
        next_3: '۳ صفحه بعدی'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var fa_IR = {
        locale: 'fa',
        Pagination: Pagination$c,
        DatePicker: locale$p,
        TimePicker: locale$o,
        Calendar: CalendarLocale$c,
        Table: {
            filterTitle: 'منوی فیلتر',
            filterConfirm: 'تایید',
            filterReset: 'پاک کردن',
            selectAll: 'انتخاب صفحه‌ی کنونی',
            selectInvert: 'معکوس کردن انتخاب‌ها در صفحه ی کنونی'
        },
        Modal: {
            okText: 'تایید',
            cancelText: 'لغو',
            justOkText: 'تایید'
        },
        Popconfirm: {
            okText: 'تایید',
            cancelText: 'لغو'
        },
        Transfer: {
            searchPlaceholder: 'جستجو',
            itemUnit: '',
            itemsUnit: ''
        },
        Upload: {
            uploading: 'در حال آپلود...',
            removeFile: 'حذف فایل',
            uploadError: 'خطا در آپلود',
            previewFile: 'مشاهده‌ی فایل'
        },
        Empty: {
            description: 'داده‌ای موجود نیست'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$d = {
        today: 'Tänään',
        now: 'Nyt',
        backToToday: 'Tämä päivä',
        ok: 'Ok',
        clear: 'Tyhjennä',
        month: 'Kuukausi',
        year: 'Vuosi',
        timeSelect: 'Valise aika',
        dateSelect: 'Valitse päivä',
        monthSelect: 'Valitse kuukausi',
        yearSelect: 'Valitse vuosi',
        decadeSelect: 'Valitse vuosikymmen',
        yearFormat: 'YYYY',
        dateFormat: 'D.M.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D.M.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Edellinen kuukausi (PageUp)',
        nextMonth: 'Seuraava kuukausi (PageDown)',
        previousYear: 'Edellinen vuosi (Control + left)',
        nextYear: 'Seuraava vuosi (Control + right)',
        previousDecade: 'Edellinen vuosikymmen',
        nextDecade: 'Seuraava vuosikymmen',
        previousCentury: 'Edellinen vuosisata',
        nextCentury: 'Seuraava vuosisata'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$q = {
        placeholder: 'Valitse aika'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$r = {
        lang: __assign({ placeholder: 'Valitse päivä', rangePlaceholder: ['Alku päivä', 'Loppu päivä'] }, CalendarLocale$d),
        timePickerLocale: __assign({}, locale$q)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$d = {
        // Options.jsx
        items_per_page: '/ sivu',
        jump_to: 'Mene',
        jump_to_confirm: 'Potvrdite',
        page: '',
        // Pagination.jsx
        prev_page: 'Edellinen sivu',
        next_page: 'Seuraava sivu',
        prev_5: 'Edelliset 5 sivua',
        next_5: 'Seuraavat 5 sivua',
        prev_3: 'Edelliset 3 sivua',
        next_3: 'Seuraavat 3 sivua'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var fi_FI = {
        locale: 'fi',
        Pagination: Pagination$d,
        DatePicker: locale$r,
        TimePicker: locale$q,
        Calendar: CalendarLocale$d,
        Table: {
            filterTitle: 'Suodatus valikko',
            filterConfirm: 'OK',
            filterReset: 'Tyhjennä',
            selectAll: 'Valitse kaikki',
            selectInvert: 'Valitse päinvastoin',
            sortTitle: 'Lajittele'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Peruuta',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Peruuta'
        },
        Transfer: {
            searchPlaceholder: 'Etsi täältä',
            itemUnit: 'kohde',
            itemsUnit: 'kohdetta'
        },
        Upload: {
            uploading: 'Lähetetään...',
            removeFile: 'Poista tiedosto',
            uploadError: 'Virhe lähetyksessä',
            previewFile: 'Esikatsele tiedostoa'
        },
        Empty: {
            description: 'Ei kohteita'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$e = {
        today: 'Aujourd\'hui',
        now: 'Maintenant',
        backToToday: 'Aujourd\'hui',
        ok: 'Ok',
        clear: 'Rétablir',
        month: 'Mois',
        year: 'Année',
        timeSelect: 'Sélectionner l\'heure',
        dateSelect: 'Sélectionner l\'heure',
        monthSelect: 'Choisissez un mois',
        yearSelect: 'Choisissez une année',
        decadeSelect: 'Choisissez une décennie',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Mois précédent (PageUp)',
        nextMonth: 'Mois suivant (PageDown)',
        previousYear: 'Année précédente (Ctrl + gauche)',
        nextYear: 'Année prochaine (Ctrl + droite)',
        previousDecade: 'Décennie précédente',
        nextDecade: 'Décennie suivante',
        previousCentury: 'Siècle précédent',
        nextCentury: 'Siècle suivant'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$s = {
        placeholder: 'Sélectionner l\'heure'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$t = {
        lang: __assign({ placeholder: 'Sélectionner une date', rangePlaceholder: ['Date de début', 'Date de fin'] }, CalendarLocale$e),
        timePickerLocale: __assign({}, locale$s)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$e = {
        // Options.jsx
        items_per_page: '/ page',
        jump_to: 'Aller à',
        jump_to_confirm: 'confirmer',
        page: '',
        // Pagination.jsx
        prev_page: 'Page précédente',
        next_page: 'Page suivante',
        prev_5: '5 Pages précédentes',
        next_5: '5 Pages suivantes',
        prev_3: '3 Pages précédentes',
        next_3: '3 Pages suivantes'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var fr_BE = {
        locale: 'fr',
        Pagination: Pagination$e,
        DatePicker: locale$t,
        TimePicker: locale$s,
        Calendar: CalendarLocale$e,
        Table: {
            filterTitle: 'Filtrer',
            filterConfirm: 'OK',
            filterReset: 'Réinitialiser'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Annuler',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Annuler'
        },
        Transfer: {
            searchPlaceholder: 'Recherche',
            itemUnit: 'élément',
            itemsUnit: 'éléments'
        },
        Empty: {
            description: 'Aucune donnée'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$f = {
        today: 'Aujourd\'hui',
        now: 'Maintenant',
        backToToday: 'Aujourd\'hui',
        ok: 'Ok',
        clear: 'Rétablir',
        month: 'Mois',
        year: 'Année',
        timeSelect: 'Sélectionner l\'heure',
        dateSelect: 'Sélectionner l\'heure',
        monthSelect: 'Choisissez un mois',
        yearSelect: 'Choisissez une année',
        decadeSelect: 'Choisissez une décennie',
        yearFormat: 'YYYY',
        dateFormat: 'DD/MM/YYYY',
        dayFormat: 'DD',
        dateTimeFormat: 'DD/MM/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Mois précédent (PageUp)',
        nextMonth: 'Mois suivant (PageDown)',
        previousYear: 'Année précédente (Ctrl + gauche)',
        nextYear: 'Année prochaine (Ctrl + droite)',
        previousDecade: 'Décennie précédente',
        nextDecade: 'Décennie suivante',
        previousCentury: 'Siècle précédent',
        nextCentury: 'Siècle suivant'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$u = {
        placeholder: 'Sélectionner l\'heure'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$v = {
        lang: __assign({ placeholder: 'Sélectionner une date', rangePlaceholder: ['Date de début', 'Date de fin'] }, CalendarLocale$f),
        timePickerLocale: __assign({}, locale$u)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$f = {
        // Options.jsx
        items_per_page: '/ page',
        jump_to: 'Aller à',
        jump_to_confirm: 'confirmer',
        page: '',
        // Pagination.jsx
        prev_page: 'Page précédente',
        next_page: 'Page suivante',
        prev_5: '5 Pages précédentes',
        next_5: '5 Pages suivantes',
        prev_3: '3 Pages précédentes',
        next_3: '3 Pages suivantes'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var fr_FR = {
        locale: 'fr',
        Pagination: Pagination$f,
        DatePicker: locale$v,
        TimePicker: locale$u,
        Calendar: CalendarLocale$f,
        Table: {
            filterTitle: 'Filtrer',
            filterConfirm: 'OK',
            filterReset: 'Réinitialiser',
            selectAll: 'Tout sélectionner',
            selectInvert: 'Inverser la sélection'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Annuler',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Annuler'
        },
        Transfer: {
            searchPlaceholder: 'Recherche',
            itemUnit: 'élément',
            itemsUnit: 'éléments'
        },
        Upload: {
            uploading: 'Téléversement en cours...',
            removeFile: 'Supprimer',
            uploadError: 'Erreur de téléversement',
            previewFile: 'Afficher l\'aperçu du fichier'
        },
        Empty: {
            description: 'Aucune donnée'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$g = {
        today: 'Í dag',
        now: 'Núna',
        backToToday: 'Til baka til dagsins í dag',
        ok: 'Í lagi',
        clear: 'Hreinsa',
        month: 'Mánuður',
        year: 'Ár',
        timeSelect: 'Velja tíma',
        dateSelect: 'Velja dag',
        monthSelect: 'Velja mánuð',
        yearSelect: 'Velja ár',
        decadeSelect: 'Velja áratug',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Fyrri mánuður (PageUp)',
        nextMonth: 'Næsti mánuður (PageDown)',
        previousYear: 'Fyrra ár (Control + left)',
        nextYear: 'Næsta ár (Control + right)',
        previousDecade: 'Fyrri áratugur',
        nextDecade: 'Næsti áratugur',
        previousCentury: 'Fyrri öld',
        nextCentury: 'Næsta öld'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$w = {
        placeholder: 'Velja tíma'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$x = {
        lang: __assign({ placeholder: 'Veldu dag', rangePlaceholder: ['Upphafsdagur', 'Lokadagur'] }, CalendarLocale$g),
        timePickerLocale: __assign({}, locale$w)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$g = {
        // Options.jsx
        items_per_page: '/ síðu',
        jump_to: 'Síða',
        jump_to_confirm: 'staðfest',
        page: '',
        // Pagination.jsx
        prev_page: 'Fyrri síða',
        next_page: 'Næsta síða',
        prev_5: 'Til baka 5 síður',
        next_5: 'Áfram 5 síður',
        prev_3: 'Til baka 3 síður',
        next_3: 'Áfram 3 síður'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var is_IS = {
        locale: 'is',
        Pagination: Pagination$g,
        DatePicker: locale$x,
        TimePicker: locale$w,
        Calendar: CalendarLocale$g,
        Table: {
            filterTitle: 'Afmarkanir',
            filterConfirm: 'Staðfesta',
            filterReset: 'Núllstilla',
            selectAll: 'Velja allt',
            selectInvert: 'Viðsnúa vali'
        },
        Modal: {
            okText: 'Áfram',
            cancelText: 'Hætta við',
            justOkText: 'Í lagi'
        },
        Popconfirm: {
            okText: 'Áfram',
            cancelText: 'Hætta við'
        },
        Transfer: {
            searchPlaceholder: 'Leita hér',
            itemUnit: 'færsla',
            itemsUnit: 'færslur'
        },
        Upload: {
            uploading: 'Hleð upp...',
            removeFile: 'Fjarlægja skrá',
            uploadError: 'Villa við að hlaða upp',
            previewFile: 'Forskoða skrá'
        },
        Empty: {
            description: 'Engin gögn'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$h = {
        today: 'Oggi',
        now: 'adesso',
        backToToday: 'Torna ad oggi',
        ok: 'Ok',
        clear: 'Chiaro',
        month: 'Mese',
        year: 'Anno',
        timeSelect: 'Seleziona il tempo',
        dateSelect: 'Select date',
        monthSelect: 'Seleziona la data',
        yearSelect: 'Scegli un anno',
        decadeSelect: 'Scegli un decennio',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Il mese scorso (PageUp)',
        nextMonth: 'Il prossimo mese (PageDown)',
        previousYear: 'L\'anno scorso (Control + sinistra)',
        nextYear: 'L\'anno prossimo (Control + destra)',
        previousDecade: 'Ultimo decennio',
        nextDecade: 'Prossimo decennio',
        previousCentury: 'Secolo precedente',
        nextCentury: 'Prossimo secolo'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$y = {
        placeholder: 'Selezionare il tempo'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$z = {
        lang: __assign({ placeholder: 'Selezionare la data', rangePlaceholder: ['Data d\'inizio', 'Data di fine'] }, CalendarLocale$h),
        timePickerLocale: __assign({}, locale$y)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$h = {
        // Options.jsx
        items_per_page: '/ pagina',
        jump_to: 'vai a',
        jump_to_confirm: 'Conferma',
        page: '',
        // Pagination.jsx
        prev_page: 'Pagina precedente',
        next_page: 'Pagina successiva',
        prev_5: 'Precedente 5 pagine',
        next_5: 'Prossime 5 pagine',
        prev_3: 'Precedente 3 pagine',
        next_3: 'Prossime 3 pagine'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var it_IT = {
        locale: 'it',
        Pagination: Pagination$h,
        DatePicker: locale$z,
        TimePicker: locale$y,
        Calendar: CalendarLocale$h,
        Table: {
            filterTitle: 'Menù Filtro',
            filterConfirm: 'OK',
            filterReset: 'Reset',
            selectAll: 'Seleziona pagina corrente',
            selectInvert: 'Inverti selezione nella pagina corrente',
            sortTitle: 'Ordina'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Annulla',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Annulla'
        },
        Transfer: {
            searchPlaceholder: 'Cerca qui',
            itemUnit: 'articolo',
            itemsUnit: 'elementi'
        },
        Upload: {
            uploading: 'Caricamento...',
            removeFile: 'Rimuovi il file',
            uploadError: 'Errore di caricamento',
            previewFile: 'Anteprima file'
        },
        Empty: {
            description: 'Nessun dato'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$i = {
        today: '今日',
        now: '現在時刻',
        backToToday: '今日に戻る',
        ok: '決定',
        timeSelect: '時間を選択',
        dateSelect: '日時を選択',
        clear: 'クリア',
        month: '月',
        year: '年',
        previousMonth: '前月 (ページアップキー)',
        nextMonth: '翌月 (ページダウンキー)',
        monthSelect: '月を選択',
        yearSelect: '年を選択',
        decadeSelect: '年代を選択',
        yearFormat: 'YYYY年',
        dayFormat: 'D日',
        dateFormat: 'YYYY年M月D日',
        dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',
        previousYear: '前年 (Controlを押しながら左キー)',
        nextYear: '翌年 (Controlを押しながら右キー)',
        previousDecade: '前の年代',
        nextDecade: '次の年代',
        previousCentury: '前の世紀',
        nextCentury: '次の世紀'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$A = {
        placeholder: '時刻を選択'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var locale$B = {
        lang: __assign({ placeholder: '日付を選択', rangePlaceholder: ['開始日付', '終了日付'] }, CalendarLocale$i),
        timePickerLocale: __assign({}, locale$A)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$i = {
        // Options.jsx
        items_per_page: '/ ページ',
        jump_to: '移動',
        jump_to_confirm: '確認する',
        page: 'ページ',
        // Pagination.jsx
        prev_page: '前のページ',
        next_page: '次のページ',
        prev_5: '前 5ページ',
        next_5: '次 5ページ',
        prev_3: '前 3ページ',
        next_3: '次 3ページ'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var ja_JP = {
        locale: 'ja',
        Pagination: Pagination$i,
        DatePicker: locale$B,
        TimePicker: locale$A,
        Calendar: CalendarLocale$i,
        Table: {
            filterTitle: 'メニューをフィルター',
            filterConfirm: 'OK',
            filterReset: 'リセット',
            selectAll: 'すべてを選択',
            selectInvert: '選択を反転'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'キャンセル',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'キャンセル'
        },
        Transfer: {
            searchPlaceholder: 'ここを検索',
            itemUnit: 'アイテム',
            itemsUnit: 'アイテム'
        },
        Upload: {
            uploading: 'アップロード中...',
            removeFile: 'ファイルを削除',
            uploadError: 'アップロードエラー',
            previewFile: 'ファイルをプレビュー'
        },
        Empty: {
            description: 'データがありません'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$j = {
        today: '오늘',
        now: '현재 시각',
        backToToday: '오늘로 돌아가기',
        ok: '확인',
        clear: '지우기',
        month: '월',
        year: '년',
        timeSelect: '시간 선택',
        dateSelect: '날짜 선택',
        monthSelect: '달 선택',
        yearSelect: '연 선택',
        decadeSelect: '연대 선택',
        yearFormat: 'YYYY년',
        dateFormat: 'YYYY-MM-DD',
        dayFormat: 'Do',
        dateTimeFormat: 'YYYY-MM-DD HH:mm:ss',
        monthBeforeYear: false,
        previousMonth: '이전 달 (PageUp)',
        nextMonth: '다음 달 (PageDown)',
        previousYear: '이전 해 (Control + left)',
        nextYear: '다음 해 (Control + right)',
        previousDecade: '이전 연대',
        nextDecade: '다음 연대',
        previousCentury: '이전 세기',
        nextCentury: '다음 세기'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$C = {
        placeholder: '날짜 선택'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$D = {
        lang: __assign({ placeholder: '날짜 선택', rangePlaceholder: ['시작일', '종료일'] }, CalendarLocale$j),
        timePickerLocale: __assign({}, locale$C)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$j = {
        // Options.jsx
        items_per_page: '/ 쪽',
        jump_to: '이동하기',
        jump_to_confirm: '확인하다',
        page: '',
        // Pagination.jsx
        prev_page: '이전 페이지',
        next_page: '다음 페이지',
        prev_5: '이전 5 페이지',
        next_5: '다음 5 페이지',
        prev_3: '이전 3 페이지',
        next_3: '다음 3 페이지'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var ko_KR = {
        locale: 'ko',
        Pagination: Pagination$j,
        DatePicker: locale$D,
        TimePicker: locale$C,
        Calendar: CalendarLocale$j,
        Table: {
            filterTitle: '필터 메뉴',
            filterConfirm: '확인',
            filterReset: '초기화',
            selectAll: '모두 선택',
            selectInvert: '선택 반전'
        },
        Modal: {
            okText: '확인',
            cancelText: '취소',
            justOkText: '확인'
        },
        Popconfirm: {
            okText: '확인',
            cancelText: '취소'
        },
        Transfer: {
            searchPlaceholder: '여기에 검색하세요',
            itemUnit: '개',
            itemsUnit: '개'
        },
        Upload: {
            uploading: '업로드 중...',
            removeFile: '파일 삭제',
            uploadError: '업로드 실패',
            previewFile: '파일 미리보기'
        },
        Empty: {
            description: '데이터 없음'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$k = {
        today: 'I dag',
        now: 'Nå',
        backToToday: 'Gå til i dag',
        ok: 'Ok',
        clear: 'Annuller',
        month: 'Måned',
        year: 'År',
        timeSelect: 'Velg tidspunkt',
        dateSelect: 'Velg dato',
        monthSelect: 'Velg måned',
        yearSelect: 'Velg år',
        decadeSelect: 'Velg årti',
        yearFormat: 'YYYY',
        dateFormat: 'DD.MM.YYYY',
        dayFormat: 'DD',
        dateTimeFormat: 'DD.MM.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Forrige måned(PageUp)',
        nextMonth: 'Neste måned (PageDown)',
        previousYear: 'Forrige år (Control + left)',
        nextYear: 'Neste år (Control + right)',
        previousDecade: 'Forrige tiår',
        nextDecade: 'Neste tiår',
        previousCentury: 'Forrige århundre',
        nextCentury: 'Neste århundre'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$E = {
        placeholder: 'Velg tid'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$F = {
        lang: __assign({ placeholder: 'Velg dato', rangePlaceholder: ['Startdato', 'Sluttdato'] }, CalendarLocale$k),
        timePickerLocale: __assign({}, locale$E)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$k = {
        // Options.jsx
        items_per_page: '/ side',
        jump_to: 'Gå til side',
        page: '',
        // Pagination.jsx
        prev_page: 'Forrige side',
        next_page: 'Neste side',
        prev_5: '5 forrige',
        next_5: '5 neste',
        prev_3: '3 forrige',
        next_3: '3 neste'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var nb_NO = {
        locale: 'nb',
        DatePicker: locale$F,
        TimePicker: locale$E,
        Calendar: CalendarLocale$k,
        Pagination: Pagination$k,
        Table: {
            filterTitle: 'Filtermeny',
            filterConfirm: 'OK',
            filterReset: 'Nullstill',
            selectAll: 'Velg alle',
            selectInvert: 'Inverter valg'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Avbryt',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Avbryt'
        },
        Transfer: {
            searchPlaceholder: 'Søk her',
            itemUnit: 'element',
            itemsUnit: 'elementer'
        },
        Upload: {
            uploading: 'Laster opp...',
            removeFile: 'Fjern fil',
            uploadError: 'Feil ved opplastning',
            previewFile: 'Forhåndsvisning'
        },
        Empty: {
            description: 'Ingen data'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$l = {
        today: 'Vandaag',
        now: 'Nu',
        backToToday: 'Terug naar vandaag',
        ok: 'Ok',
        clear: 'Reset',
        month: 'Maand',
        year: 'Jaar',
        timeSelect: 'Selecteer tijd',
        dateSelect: 'Selecteer datum',
        monthSelect: 'Kies een maand',
        yearSelect: 'Kies een jaar',
        decadeSelect: 'Kies een decennium',
        yearFormat: 'YYYY',
        dateFormat: 'D-M-YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D-M-YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Vorige maand (PageUp)',
        nextMonth: 'Volgende maand (PageDown)',
        previousYear: 'Vorig jaar (Control + left)',
        nextYear: 'Volgend jaar (Control + right)',
        previousDecade: 'Vorig decennium',
        nextDecade: 'Volgend decennium',
        previousCentury: 'Vorige eeuw',
        nextCentury: 'Volgende eeuw'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$G = {
        placeholder: 'Selecteer tijd'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$H = {
        lang: __assign({ placeholder: 'Selecteer datum', rangePlaceholder: ['Begin datum', 'Eind datum'] }, CalendarLocale$l),
        timePickerLocale: __assign({}, locale$G)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$l = {
        // Options.jsx
        items_per_page: '/ pagina',
        jump_to: 'Ga naar',
        jump_to_confirm: 'bevestigen',
        page: '',
        // Pagination.jsx
        prev_page: 'Vorige pagina',
        next_page: 'Volgende pagina',
        prev_5: 'Vorige 5 pagina\'s',
        next_5: 'Volgende 5 pagina\'s',
        prev_3: 'Vorige 3 pagina\'s',
        next_3: 'Volgende 3 pagina\'s'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var nl_BE = {
        locale: 'nl-be',
        Pagination: Pagination$l,
        DatePicker: locale$H,
        TimePicker: locale$G,
        Calendar: CalendarLocale$l,
        Table: {
            filterTitle: 'FilterMenu',
            filterConfirm: 'OK',
            filterReset: 'Reset',
            selectAll: 'Selecteer huidige pagina',
            selectInvert: 'Selecteer huidige pagina'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Annuleer',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Annuleer'
        },
        Transfer: {
            searchPlaceholder: 'Zoek hier',
            itemUnit: 'item',
            itemsUnit: 'items'
        },
        Upload: {
            uploading: 'Uploaden...',
            removeFile: 'Bestand verwijderen',
            uploadError: 'Upload fout',
            previewFile: 'Preview bestand'
        },
        Empty: {
            description: 'Geen gegevens'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$m = {
        today: 'Vandaag',
        now: 'Nu',
        backToToday: 'Terug naar vandaag',
        ok: 'Ok',
        clear: 'Reset',
        month: 'Maand',
        year: 'Jaar',
        timeSelect: 'Selecteer tijd',
        dateSelect: 'Selecteer datum',
        monthSelect: 'Kies een maand',
        yearSelect: 'Kies een jaar',
        decadeSelect: 'Kies een decennium',
        yearFormat: 'YYYY',
        dateFormat: 'D-M-YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D-M-YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Vorige maand (PageUp)',
        nextMonth: 'Volgende maand (PageDown)',
        previousYear: 'Vorig jaar (Control + left)',
        nextYear: 'Volgend jaar (Control + right)',
        previousDecade: 'Vorig decennium',
        nextDecade: 'Volgend decennium',
        previousCentury: 'Vorige eeuw',
        nextCentury: 'Volgende eeuw'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$I = {
        placeholder: 'Selecteer tijd'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$J = {
        lang: __assign({ placeholder: 'Selecteer datum', rangePlaceholder: ['Begin datum', 'Eind datum'] }, CalendarLocale$m),
        timePickerLocale: __assign({}, locale$I)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$m = {
        // Options.jsx
        items_per_page: '/ pagina',
        jump_to: 'Ga naar',
        jump_to_confirm: 'bevestigen',
        page: '',
        // Pagination.jsx
        prev_page: 'Vorige pagina',
        next_page: 'Volgende pagina',
        prev_5: 'Vorige 5 pagina\'s',
        next_5: 'Volgende 5 pagina\'s',
        prev_3: 'Vorige 3 pagina\'s',
        next_3: 'Volgende 3 pagina\'s'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var nl_NL = {
        locale: 'nl',
        Pagination: Pagination$m,
        DatePicker: locale$J,
        TimePicker: locale$I,
        Calendar: CalendarLocale$m,
        Table: {
            filterTitle: 'Filteren',
            filterConfirm: 'OK',
            filterReset: 'Reset',
            selectAll: 'Selecteer huidige pagina',
            selectInvert: 'Deselecteer huidige pagina'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Annuleren',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Annuleren'
        },
        Transfer: {
            searchPlaceholder: 'Zoeken',
            itemUnit: 'item',
            itemsUnit: 'items'
        },
        Upload: {
            uploading: 'Uploaden...',
            removeFile: 'Verwijder bestand',
            uploadError: 'Fout tijdens uploaden',
            previewFile: 'Bekijk bestand'
        },
        Empty: {
            description: 'Geen gegevens'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$n = {
        today: 'Dzisiaj',
        now: 'Teraz',
        backToToday: 'Ustaw dzisiaj',
        ok: 'Ok',
        clear: 'Wyczyść',
        month: 'Miesiąc',
        year: 'Rok',
        timeSelect: 'Ustaw czas',
        dateSelect: 'Ustaw datę',
        monthSelect: 'Wybierz miesiąc',
        yearSelect: 'Wybierz rok',
        decadeSelect: 'Wybierz dekadę',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Poprzedni miesiąc (PageUp)',
        nextMonth: 'Następny miesiąc (PageDown)',
        previousYear: 'Ostatni rok (Ctrl + left)',
        nextYear: 'Następny rok (Ctrl + right)',
        previousDecade: 'Ostatnia dekada',
        nextDecade: 'Następna dekada',
        previousCentury: 'Ostatni wiek',
        nextCentury: 'Następny wiek'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$K = {
        placeholder: 'Wybierz godzinę'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$L = {
        lang: __assign({ placeholder: 'Wybierz datę', rangePlaceholder: ['Data początkowa', 'Data końcowa'] }, CalendarLocale$n),
        timePickerLocale: __assign({}, locale$K)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$n = {
        // Options.jsx
        items_per_page: '/ stronę',
        jump_to: 'Idź do',
        jump_to_confirm: 'potwierdzać',
        page: '',
        // Pagination.jsx
        prev_page: 'Poprzednia strona',
        next_page: 'Następna strona',
        prev_5: 'Poprzednie 5 stron',
        next_5: 'Następne 5 stron',
        prev_3: 'Poprzednie 3 strony',
        next_3: 'Następne 3 strony'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var pl_PL = {
        locale: 'pl',
        Pagination: Pagination$n,
        DatePicker: locale$L,
        TimePicker: locale$K,
        Calendar: CalendarLocale$n,
        Table: {
            filterTitle: 'Menu filtra',
            filterConfirm: 'OK',
            filterReset: 'Wyczyść',
            selectAll: 'Zaznacz bieżącą stronę',
            selectInvert: 'Odwróć zaznaczenie'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Anuluj',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Anuluj'
        },
        Transfer: {
            searchPlaceholder: 'Szukaj',
            itemUnit: 'obiekt',
            itemsUnit: 'obiekty'
        },
        Upload: {
            uploading: 'Wysyłanie...',
            removeFile: 'Usuń plik',
            uploadError: 'Błąd wysyłania',
            previewFile: 'Podejrzyj plik'
        },
        Empty: {
            description: 'Brak danych'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$o = {
        today: 'Hoje',
        now: 'Agora',
        backToToday: 'Voltar para hoje',
        ok: 'Ok',
        clear: 'Limpar',
        month: 'Mês',
        year: 'Ano',
        timeSelect: 'Selecionar tempo',
        dateSelect: 'Selecionar data',
        monthSelect: 'Escolher mês',
        yearSelect: 'Escolher ano',
        decadeSelect: 'Escolher década',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: false,
        previousMonth: 'Mês anterior (PageUp)',
        nextMonth: 'Próximo mês (PageDown)',
        previousYear: 'Ano anterior (Control + esquerda)',
        nextYear: 'Próximo ano (Control + direita)',
        previousDecade: 'Década anterior',
        nextDecade: 'Próxima década',
        previousCentury: 'Século anterior',
        nextCentury: 'Próximo século'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$M = {
        placeholder: 'Hora'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$N = {
        lang: __assign({ placeholder: 'Selecionar data', rangePlaceholder: ['Data de início', 'Data de fim'] }, CalendarLocale$o),
        timePickerLocale: __assign({}, locale$M)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$o = {
        // Options.jsx
        items_per_page: '/ páginas',
        jump_to: 'Vá até',
        jump_to_confirm: 'confirme',
        page: '',
        // Pagination.jsx
        prev_page: 'Página anterior',
        next_page: 'Próxima página',
        prev_5: '5 páginas anteriores',
        next_5: '5 próximas páginas',
        prev_3: '3 páginas anteriores',
        next_3: '3 próximas páginas'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var pt_BR = {
        locale: 'pt-br',
        Pagination: Pagination$o,
        DatePicker: locale$N,
        TimePicker: locale$M,
        Calendar: CalendarLocale$o,
        Table: {
            filterTitle: 'Filtro',
            filterConfirm: 'OK',
            filterReset: 'Resetar',
            selectAll: 'Selecionar página atual',
            selectInvert: 'Inverter seleção'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Cancelar',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Cancelar'
        },
        Transfer: {
            searchPlaceholder: 'Procurar',
            itemUnit: 'item',
            itemsUnit: 'items'
        },
        Upload: {
            uploading: 'Enviando...',
            removeFile: 'Remover arquivo',
            uploadError: 'Erro no envio',
            previewFile: 'Visualizar arquivo'
        },
        Empty: {
            description: 'Não há dados'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$p = {
        today: 'Hoje',
        now: 'Agora',
        backToToday: 'Hoje',
        ok: 'Ok',
        clear: 'Limpar',
        month: 'Mês',
        year: 'Ano',
        timeSelect: 'Selecionar hora',
        dateSelect: 'Selecionar data',
        monthSelect: 'Selecionar mês',
        yearSelect: 'Selecionar ano',
        decadeSelect: 'Selecionar década',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Mês anterior (PageUp)',
        nextMonth: 'Mês seguinte (PageDown)',
        previousYear: 'Ano anterior (Control + left)',
        nextYear: 'Ano seguinte (Control + right)',
        previousDecade: 'Década anterior',
        nextDecade: 'Década seguinte',
        previousCentury: 'Século anterior',
        nextCentury: 'Século seguinte'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$O = {
        placeholder: 'Hora'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$P = {
        lang: __assign({}, CalendarLocale$p, { placeholder: 'Data', rangePlaceholder: ['Data inicial', 'Data final'], today: 'Hoje', now: 'Agora', backToToday: 'Hoje', ok: 'Ok', clear: 'Limpar', month: 'Mês', year: 'Ano', timeSelect: 'Hora', dateSelect: 'Selecionar data', monthSelect: 'Selecionar mês', yearSelect: 'Selecionar ano', decadeSelect: 'Selecionar década', yearFormat: 'YYYY', dateFormat: 'D/M/YYYY', dayFormat: 'D', dateTimeFormat: 'D/M/YYYY HH:mm:ss', monthFormat: 'MMMM', monthBeforeYear: false, previousMonth: 'Mês anterior (PageUp)', nextMonth: 'Mês seguinte (PageDown)', previousYear: 'Ano anterior (Control + left)', nextYear: 'Ano seguinte (Control + right)', previousDecade: 'Última década', nextDecade: 'Próxima década', previousCentury: 'Último século', nextCentury: 'Próximo século' }),
        timePickerLocale: __assign({}, locale$O, { placeholder: 'Hora' })
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$p = {
        // Options.jsx
        items_per_page: '/ página',
        jump_to: 'Saltar',
        jump_to_confirm: 'confirmar',
        page: '',
        // Pagination.jsx
        prev_page: 'Página Anterior',
        next_page: 'Página Seguinte',
        prev_5: 'Recuar 5 Páginas',
        next_5: 'Avançar 5 Páginas',
        prev_3: 'Recuar 3 Páginas',
        next_3: 'Avançar 3 Páginas'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var pt_PT = {
        locale: 'pt',
        Pagination: Pagination$p,
        DatePicker: locale$P,
        TimePicker: locale$O,
        Calendar: CalendarLocale$p,
        Table: {
            filterTitle: 'Filtro',
            filterConfirm: 'Aplicar',
            filterReset: 'Reiniciar',
            selectAll: 'Selecionar página atual',
            selectInvert: 'Inverter seleção'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Cancelar',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Cancelar'
        },
        Transfer: {
            searchPlaceholder: 'Procurar...',
            itemUnit: 'item',
            itemsUnit: 'itens'
        },
        Upload: {
            uploading: 'A carregar...',
            removeFile: 'Remover',
            uploadError: 'Erro ao carregar',
            previewFile: 'Pré-visualizar'
        },
        Empty: {
            description: 'Sem resultados'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$q = {
        today: 'Сегодня',
        now: 'Сейчас',
        backToToday: 'Текущая дата',
        ok: 'Ok',
        clear: 'Очистить',
        month: 'Месяц',
        year: 'Год',
        timeSelect: 'Выбрать время',
        dateSelect: 'Выбрать дату',
        monthSelect: 'Выбрать месяц',
        yearSelect: 'Выбрать год',
        decadeSelect: 'Выбрать десятилетие',
        yearFormat: 'YYYY',
        dateFormat: 'D-M-YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D-M-YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Предыдущий месяц (PageUp)',
        nextMonth: 'Следующий месяц (PageDown)',
        previousYear: 'Предыдущий год (Control + left)',
        nextYear: 'Следующий год (Control + right)',
        previousDecade: 'Предыдущее десятилетие',
        nextDecade: 'Следущее десятилетие',
        previousCentury: 'Предыдущий век',
        nextCentury: 'Следующий век'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /**
     * Created by Andrey Gayvoronsky on 13/04/16.
     * @type {?}
     */
    var locale$Q = {
        placeholder: 'Выберите время'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var locale$R = {
        lang: __assign({ placeholder: 'Выберите дату', rangePlaceholder: ['Начальная дата', 'Конечная дата'] }, CalendarLocale$q),
        timePickerLocale: __assign({}, locale$Q)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$q = {
        // Options.jsx
        items_per_page: '/странице',
        jump_to: 'Перейти',
        jump_to_confirm: 'подтвердить',
        page: '',
        // Pagination.jsx
        prev_page: 'Назад',
        next_page: 'Вперед',
        prev_5: 'Предыдущие 5',
        next_5: 'Следующие 5',
        prev_3: 'Предыдущие 3',
        next_3: 'Следующие 3'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var ru_RU = {
        locale: 'ru',
        Pagination: Pagination$q,
        DatePicker: locale$R,
        TimePicker: locale$Q,
        Calendar: CalendarLocale$q,
        Table: {
            filterTitle: 'Фильтр',
            filterConfirm: 'OK',
            filterReset: 'Сбросить',
            selectAll: 'Выбрать всё',
            selectInvert: 'Инвертировать выбор'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Отмена',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Отмена'
        },
        Transfer: {
            searchPlaceholder: 'Поиск',
            itemUnit: 'элем.',
            itemsUnit: 'элем.'
        },
        Upload: {
            uploading: 'Загрузка...',
            removeFile: 'Удалить файл',
            uploadError: 'При загрузке произошла ошибка',
            previewFile: 'Предпросмотр файла'
        },
        Empty: {
            description: 'Нет данных'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$r = {
        today: 'Dnes',
        now: 'Teraz',
        backToToday: 'Späť na dnes',
        ok: 'Ok',
        clear: 'Vymazať',
        month: 'Mesiac',
        year: 'Rok',
        timeSelect: 'Vybrať čas',
        dateSelect: 'Vybrať dátum',
        monthSelect: 'Vybrať mesiac',
        yearSelect: 'Vybrať rok',
        decadeSelect: 'Vybrať dekádu',
        yearFormat: 'YYYY',
        dateFormat: 'D.M.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D.M.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Predchádzajúci mesiac (PageUp)',
        nextMonth: 'Nasledujúci mesiac (PageDown)',
        previousYear: 'Predchádzajúci rok (Control + left)',
        nextYear: 'Nasledujúci rok (Control + right)',
        previousDecade: 'Predchádzajúca dekáda',
        nextDecade: 'Nasledujúca dekáda',
        previousCentury: 'Predchádzajúce storočie',
        nextCentury: 'Nasledujúce storočie'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$S = {
        placeholder: 'Vybrať čas'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // 统一合并为完整的 Locale
    /** @type {?} */
    var locale$T = {
        lang: __assign({ placeholder: 'Vybrať dátum', rangePlaceholder: ['Od', 'Do'] }, CalendarLocale$r),
        timePickerLocale: __assign({}, locale$S)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$r = {
        // Options.jsx
        items_per_page: '/ strana',
        jump_to: 'Choď na',
        jump_to_confirm: 'potvrdit',
        page: '',
        // Pagination.jsx
        prev_page: 'Predchádzajúca strana',
        next_page: 'Nasledujúca strana',
        prev_5: 'Predchádzajúcich 5 strán',
        next_5: 'Nasledujúcich 5 strán',
        prev_3: 'Predchádzajúce 3 strany',
        next_3: 'Nasledujúce 3 strany'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var sk_SK = {
        locale: 'sk',
        Pagination: Pagination$r,
        DatePicker: locale$T,
        TimePicker: locale$S,
        Calendar: CalendarLocale$r,
        Table: {
            filterTitle: 'Filter',
            filterConfirm: 'OK',
            filterReset: 'Obnoviť',
            selectAll: 'Vybrať všetko',
            selectInvert: 'Vybrať opačné'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Zrušiť',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Zrušiť'
        },
        Transfer: {
            searchPlaceholder: 'Vyhľadávanie',
            itemUnit: 'položka',
            itemsUnit: 'položiek'
        },
        Upload: {
            uploading: 'Nahrávanie...',
            removeFile: 'Odstrániť súbor',
            uploadError: 'Chyba pri nahrávaní',
            previewFile: 'Zobraziť súbor'
        },
        Empty: {
            description: 'Žiadne dáta'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$s = {
        today: 'Danes',
        now: 'Zdaj',
        backToToday: 'Nazaj na danes',
        ok: 'V redu',
        clear: 'Počisti',
        month: 'Mesec',
        year: 'Leto',
        timeSelect: 'Izberi čas',
        dateSelect: 'Izberi datum',
        monthSelect: 'Izberi mesec',
        yearSelect: 'Izberi leto',
        decadeSelect: 'Izberi desetletje',
        yearFormat: 'YYYY',
        dateFormat: 'DD.MM.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'DD.MM.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Predhodnji mesec (PageUp)',
        nextMonth: 'Naslednji mesec (PageDown)',
        previousYear: 'Prejšnje leto (Control + left)',
        nextYear: 'Naslednje leto (Control + right)',
        previousDecade: 'Prejšnje desetletje',
        nextDecade: 'Naslednje desetletje',
        previousCentury: 'Prejšnje stoletje',
        nextCentury: 'Naslednje stoletje'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$U = {
        placeholder: 'Izberite čas'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$V = {
        lang: __assign({ placeholder: 'Izberite datum', rangePlaceholder: ['Začetni datum', 'Končni datum'] }, CalendarLocale$s),
        timePickerLocale: __assign({}, locale$U)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$s = {
        // Options.jsx
        items_per_page: '/ stran',
        jump_to: 'Pojdi na',
        jump_to_confirm: 'potrdi',
        page: '',
        // Pagination.jsx
        prev_page: 'Prejšnja stran',
        next_page: 'Naslednja stran',
        prev_5: 'Prejšnjih 5 Strani',
        next_5: 'Naslednjih 5 Strani',
        prev_3: 'Prejšnje 3 Strani',
        next_3: 'Naslednje 3 Strani'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var sl_SI = {
        locale: 'sl',
        Pagination: Pagination$s,
        DatePicker: locale$V,
        TimePicker: locale$U,
        Calendar: CalendarLocale$s,
        Table: {
            filterTitle: 'Filter',
            filterConfirm: 'Filtriraj',
            filterReset: 'Pobriši filter',
            selectAll: 'Izberi vse na trenutni strani',
            selectInvert: 'Obrni izbor na trenutni strani'
        },
        Modal: {
            okText: 'V redu',
            cancelText: 'Prekliči',
            justOkText: 'V redu'
        },
        Popconfirm: {
            okText: 'v redu',
            cancelText: 'Prekliči'
        },
        Transfer: {
            searchPlaceholder: 'Išči tukaj',
            itemUnit: 'Objekt',
            itemsUnit: 'Objektov'
        },
        Upload: {
            uploading: 'Nalaganje...',
            removeFile: 'Odstrani datoteko',
            uploadError: 'Napaka pri nalaganju',
            previewFile: 'Predogled datoteke'
        },
        Empty: {
            description: 'Ni podatkov'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$t = {
        today: 'Danas',
        now: 'Sada',
        backToToday: 'Vrati se na danas',
        ok: 'U redu',
        clear: 'Obriši',
        month: 'Mesec',
        year: 'Godina',
        timeSelect: 'Izaberi vreme',
        dateSelect: 'Izaberi datum',
        monthSelect: 'Izaberi mesec',
        yearSelect: 'Izaberi godinu',
        decadeSelect: 'Izaberi deceniju',
        yearFormat: 'YYYY',
        dateFormat: 'DD.MM.YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'DD.MM.YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Prethodni mesec (PageUp)',
        nextMonth: 'Sledeći mesec (PageDown)',
        previousYear: 'Prethodna godina (Control + left)',
        nextYear: 'Sledeća godina (Control + right)',
        previousDecade: 'Prethodna decenija',
        nextDecade: 'Sledeća decenija',
        previousCentury: 'Prethodni vek',
        nextCentury: 'Sledeći vek'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$W = {
        placeholder: 'Izaberite vreme'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$X = {
        lang: __assign({ placeholder: 'Izaberite datum', rangePlaceholder: ['Početni datum', 'Krajnji datum'] }, CalendarLocale$t),
        timePickerLocale: __assign({}, locale$W)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$t = {
        // Options.jsx
        items_per_page: '/ strani',
        jump_to: 'Idi na',
        page: '',
        // Pagination.jsx
        prev_page: 'Prethodna strana',
        next_page: 'Sledeća strana',
        prev_5: 'Prethodnih 5 Strana',
        next_5: 'Sledećih 5 Strana',
        prev_3: 'Prethodnih 3 Strane',
        next_3: 'Sledećih 3 Strane'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var sr_RS = {
        locale: 'sr',
        Pagination: Pagination$t,
        DatePicker: locale$X,
        TimePicker: locale$W,
        Calendar: CalendarLocale$t,
        Table: {
            filterTitle: 'Filter',
            filterConfirm: 'Primeni filter',
            filterReset: 'Resetuj filter',
            selectAll: 'Obeleži sve na trenutnoj strani',
            selectInvert: 'Obrni selekciju na trenutnoj stranici'
        },
        Modal: {
            okText: 'U redu',
            cancelText: 'Otkaži',
            justOkText: 'U redu'
        },
        Popconfirm: {
            okText: 'U redu',
            cancelText: 'Otkaži'
        },
        Transfer: {
            searchPlaceholder: 'Pretražite ovde',
            itemUnit: 'stavka',
            itemsUnit: 'stavki'
        },
        Upload: {
            uploading: 'Slanje...',
            removeFile: 'Ukloni fajl',
            uploadError: 'Greška prilikom slanja',
            previewFile: 'Pogledaj fajl'
        },
        Empty: {
            description: 'Nema podataka'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$u = {
        today: 'I dag',
        now: 'Nu',
        backToToday: 'Till idag',
        ok: 'Ok',
        clear: 'Avbryt',
        month: 'Månad',
        year: 'År',
        timeSelect: 'Välj tidpunkt',
        dateSelect: 'Välj datum',
        monthSelect: 'Välj månad',
        yearSelect: 'Välj år',
        decadeSelect: 'Välj årtionde',
        yearFormat: 'YYYY',
        dateFormat: 'YYYY-MM-DD',
        dayFormat: 'D',
        dateTimeFormat: 'YYYY-MM-DD H:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Förra månaden (PageUp)',
        nextMonth: 'Nästa månad (PageDown)',
        previousYear: 'Föreg år (Control + left)',
        nextYear: 'Nästa år (Control + right)',
        previousDecade: 'Föreg årtionde',
        nextDecade: 'Nästa årtionde',
        previousCentury: 'Föreg århundrade',
        nextCentury: 'Nästa århundrade'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$Y = {
        placeholder: 'Välj tid'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var locale$Z = {
        lang: __assign({ placeholder: 'Välj datum', rangePlaceholder: ['Startdatum', 'Slutdatum'] }, CalendarLocale$u),
        timePickerLocale: __assign({}, locale$Y)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$u = {
        // Options.jsx
        items_per_page: '/ sida',
        jump_to: 'Gå till',
        jump_to_confirm: 'bekräfta',
        page: '',
        // Pagination.jsx
        prev_page: 'Föreg sida',
        next_page: 'Nästa sida',
        prev_5: 'Föreg 5 sidor',
        next_5: 'Nästa 5 sidor',
        prev_3: 'Föreg 3 sidor',
        next_3: 'Nästa 3 sidor'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var sv_SE = {
        locale: 'sv',
        Pagination: Pagination$u,
        DatePicker: locale$Z,
        TimePicker: locale$Y,
        Calendar: CalendarLocale$u,
        Table: {
            filterTitle: 'Filtermeny',
            filterConfirm: 'OK',
            filterReset: 'Rensa'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Avbryt',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Avbryt'
        },
        Transfer: {
            searchPlaceholder: 'Sök',
            itemUnit: 'element',
            itemsUnit: 'element'
        },
        Empty: {
            description: 'Ingen information'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$v = {
        today: 'วันนี้',
        now: 'ตอนนี้',
        backToToday: 'กลับไปยังวันนี้',
        ok: 'ตกลง',
        clear: 'ลบล้าง',
        month: 'เดือน',
        year: 'ปี',
        timeSelect: 'เลือกเวลา',
        dateSelect: 'เลือกวัน',
        monthSelect: 'เลือกเดือน',
        yearSelect: 'เลือกปี',
        decadeSelect: 'เลือกทศวรรษ',
        yearFormat: 'YYYY',
        dateFormat: 'D/M/YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D/M/YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'เดือนก่อนหน้า (PageUp)',
        nextMonth: 'เดือนถัดไป (PageDown)',
        previousYear: 'ปีก่อนหน้า (Control + left)',
        nextYear: 'ปีถัดไป (Control + right)',
        previousDecade: 'ทศวรรษก่อนหน้า',
        nextDecade: 'ทศวรรษถัดไป',
        previousCentury: 'ศตวรรษก่อนหน้า',
        nextCentury: 'ศตวรรษถัดไป'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$_ = {
        placeholder: 'เลือกเวลา'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$10 = {
        lang: __assign({ placeholder: 'เลือกวันที่', rangePlaceholder: ['วันเริ่มต้น', 'วันสิ้นสุด'] }, CalendarLocale$v),
        timePickerLocale: __assign({}, locale$_)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$v = {
        // Options.jsx
        items_per_page: '/ หน้า',
        jump_to: 'ไปยัง',
        jump_to_confirm: 'ยืนยัน',
        page: '',
        // Pagination.jsx
        prev_page: 'หน้าก่อนหน้า',
        next_page: 'หน้าถัดไป',
        prev_5: 'ย้อนกลับ 5 หน้า',
        next_5: 'ถัดไป 5 หน้า',
        prev_3: 'ย้อนกลับ 3 หน้า',
        next_3: 'ถัดไป 3 หน้า'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var th_TH = {
        locale: 'th',
        Pagination: Pagination$v,
        DatePicker: locale$10,
        TimePicker: locale$_,
        Calendar: CalendarLocale$v,
        Table: {
            filterTitle: 'ตัวกรอง',
            filterConfirm: 'ยืนยัน',
            filterReset: 'รีเซ็ต',
            selectAll: 'เลือกทั้งหมดในหน้านี้',
            selectInvert: 'เลือกสถานะตรงกันข้าม'
        },
        Modal: {
            okText: 'ตกลง',
            cancelText: 'ยกเลิก',
            justOkText: 'ตกลง'
        },
        Popconfirm: {
            okText: 'ตกลง',
            cancelText: 'ยกเลิก'
        },
        Transfer: {
            searchPlaceholder: 'ค้นหา',
            itemUnit: 'ชิ้น',
            itemsUnit: 'ชิ้น'
        },
        Upload: {
            uploading: 'กำลังอัปโหลด...',
            removeFile: 'ลบไฟล์',
            uploadError: 'เกิดข้อผิดพลาดในการอัปโหลด',
            previewFile: 'ดูตัวอย่างไฟล์'
        },
        Empty: {
            description: 'ไม่มีข้อมูล'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$11 = {
        placeholder: 'Zaman Seç'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$12 = {
        lang: __assign({ placeholder: 'Tarih Seç', rangePlaceholder: ['Başlangıç Tarihi', 'Bitiş Tarihi'] }, CalendarLocale$9),
        timePickerLocale: __assign({}, locale$11)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var tr_TR = {
        locale: 'tr',
        Pagination: Pagination$9,
        DatePicker: locale$12,
        TimePicker: locale$11,
        Calendar: CalendarLocale$9,
        Table: {
            filterTitle: 'Menü Filtrele',
            filterConfirm: 'Tamam',
            filterReset: 'Sıfırla',
            selectAll: 'Hepsini Seç',
            selectInvert: 'Tersini Seç'
        },
        Modal: {
            okText: 'Tamam',
            cancelText: 'İptal',
            justOkText: 'Tamam'
        },
        Popconfirm: {
            okText: 'Tamam',
            cancelText: 'İptal'
        },
        Transfer: {
            searchPlaceholder: 'Arama',
            itemUnit: 'Öğe',
            itemsUnit: 'Öğeler'
        },
        Upload: {
            uploading: 'Yükleniyor...',
            removeFile: "Dosyay\u0131 kald\u0131r",
            uploadError: 'Yükleme Hatası',
            previewFile: "Dosyay\u0131 \u00D6nizle"
        },
        Empty: {
            description: 'Veri Yok'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$w = {
        today: 'Сьогодні',
        now: 'Зараз',
        backToToday: 'Поточна дата',
        ok: 'Ok',
        clear: 'Очистити',
        month: 'Місяць',
        year: 'Рік',
        timeSelect: 'Обрати час',
        dateSelect: 'Обрати дату',
        monthSelect: 'Обрати місяць',
        yearSelect: 'Обрати рік',
        decadeSelect: 'Обрати десятиріччя',
        yearFormat: 'YYYY',
        dateFormat: 'D-M-YYYY',
        dayFormat: 'D',
        dateTimeFormat: 'D-M-YYYY HH:mm:ss',
        monthBeforeYear: true,
        previousMonth: 'Попередній місяць (PageUp)',
        nextMonth: 'Наступний місяць (PageDown)',
        previousYear: 'Попередній рік (Control + left)',
        nextYear: 'Наступний рік (Control + right)',
        previousDecade: 'Попереднє десятиріччя',
        nextDecade: 'Наступне десятиріччя',
        previousCentury: 'Попереднє століття',
        nextCentury: 'Наступне століття'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$13 = {
        placeholder: 'Оберіть час'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var locale$14 = {
        lang: __assign({ placeholder: 'Оберіть дату', rangePlaceholder: ['Початкова дата', 'Кінцева дата'] }, CalendarLocale$w),
        timePickerLocale: __assign({}, locale$13)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$w = {
        // Options.jsx
        items_per_page: '/ сторінці',
        jump_to: 'Перейти',
        jump_to_confirm: 'підтвердити',
        page: '',
        // Pagination.jsx
        prev_page: 'Попередня сторінка',
        next_page: 'Наступна сторінка',
        prev_5: 'Попередні 5 сторінок',
        next_5: 'Наступні 5 сторінок',
        prev_3: 'Попередні 3 сторінки',
        next_3: 'Наступні 3 сторінки'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var uk_UA = {
        locale: 'uk',
        Pagination: Pagination$w,
        DatePicker: locale$14,
        TimePicker: locale$13,
        Calendar: CalendarLocale$w,
        Table: {
            filterTitle: 'Фільтрувати',
            filterConfirm: 'OK',
            filterReset: 'Скинути',
            selectAll: 'Обрати всі',
            selectInvert: 'Інвертувати вибір'
        },
        Modal: {
            okText: 'Гаразд',
            cancelText: 'Скасувати',
            justOkText: 'Гаразд'
        },
        Popconfirm: {
            okText: 'Гаразд',
            cancelText: 'Скасувати'
        },
        Transfer: {
            searchPlaceholder: 'Введіть текст для пошуку',
            itemUnit: 'item',
            itemsUnit: 'items'
        },
        Upload: {
            uploading: 'Завантаження ...',
            removeFile: 'Видалити файл',
            uploadError: 'Помилка завантаження',
            previewFile: 'Попередній перегляд файлу'
        },
        Empty: {
            description: 'Даних немає'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    // Merge into a locale object
    /** @type {?} */
    var locale$15 = {
        lang: __assign({ placeholder: 'Chọn thời điểm', rangePlaceholder: ['Ngày bắt đầu', 'Ngày kết thúc'] }, CalendarLocale$9),
        timePickerLocale: __assign({}, locale$i)
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$x = {
        // Options.jsx
        items_per_page: '/ trang',
        jump_to: 'Đến',
        jump_to_confirm: 'xác nhận',
        page: '',
        // Pagination.jsx
        prev_page: 'Trang Trước',
        next_page: 'Trang Kế',
        prev_5: 'Về 5 Trang Trước',
        next_5: 'Đến 5 Trang Kế',
        prev_3: 'Về 3 Trang Trước',
        next_3: 'Đến 3 Trang Kế'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$16 = {
        placeholder: 'Chọn thời gian'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var vi_VN = {
        locale: 'vi',
        Pagination: Pagination$x,
        DatePicker: locale$15,
        TimePicker: locale$16,
        Calendar: locale$15,
        Table: {
            filterTitle: 'Bộ ',
            filterConfirm: 'OK',
            filterReset: 'Tạo Lại',
            selectAll: 'Chọn Tất Cả',
            selectInvert: 'Chọn Ngược Lại'
        },
        Modal: {
            okText: 'OK',
            cancelText: 'Huỷ',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: 'OK',
            cancelText: 'Huỷ'
        },
        Transfer: {
            searchPlaceholder: 'Tìm ở đây',
            itemUnit: 'mục',
            itemsUnit: 'mục'
        },
        Upload: {
            uploading: 'Đang tải lên...',
            removeFile: 'Gỡ bỏ tập tin',
            uploadError: 'Lỗi tải lên',
            previewFile: 'Xem thử tập tin'
        },
        Empty: {
            description: 'Trống'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var CalendarLocale$x = {
        today: '今天',
        now: '此刻',
        backToToday: '返回今天',
        ok: '確定',
        timeSelect: '選擇時間',
        dateSelect: '選擇日期',
        clear: '清除',
        month: '月',
        year: '年',
        previousMonth: '上個月 (翻頁上鍵)',
        nextMonth: '下個月 (翻頁下鍵)',
        monthSelect: '選擇月份',
        yearSelect: '選擇年份',
        decadeSelect: '選擇年代',
        yearFormat: 'YYYY年',
        dayFormat: 'D日',
        dateFormat: 'YYYY年M月D日',
        dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',
        previousYear: '上一年 (Control鍵加左方向鍵)',
        nextYear: '下一年 (Control鍵加右方向鍵)',
        previousDecade: '上一年代',
        nextDecade: '下一年代',
        previousCentury: '上一世紀',
        nextCentury: '下一世紀'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    /** @type {?} */
    var locale$17 = {
        placeholder: '請選擇時間'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /** @type {?} */
    var locale$18 = {
        lang: __assign({ placeholder: '請選擇日期', rangePlaceholder: ['開始日期', '結束日期'] }, CalendarLocale$x),
        timePickerLocale: __assign({}, locale$17)
    };
    locale$18.lang.ok = '確 定';

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    /**
     * @license
     * Copyright Alibaba.com All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
     */
    var Pagination$y = {
        // Options.jsx
        items_per_page: '條/頁',
        jump_to: '跳至',
        jump_to_confirm: '確定',
        page: '頁',
        // Pagination.jsx
        prev_page: '上一頁',
        next_page: '下一頁',
        prev_5: '向前 5 頁',
        next_5: '向後 5 頁',
        prev_3: '向前 3 頁',
        next_3: '向後 3 頁'
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */
    var zh_TW = {
        locale: 'zh-tw',
        Pagination: Pagination$y,
        DatePicker: locale$18,
        TimePicker: locale$17,
        Calendar: CalendarLocale$x,
        Table: {
            filterTitle: '篩選器',
            filterConfirm: '確 定',
            filterReset: '重 置',
            selectAll: '全部選取',
            selectInvert: '反向選取'
        },
        Modal: {
            okText: '確 定',
            cancelText: '取 消',
            justOkText: 'OK'
        },
        Popconfirm: {
            okText: '確 定',
            cancelText: '取 消'
        },
        Transfer: {
            searchPlaceholder: '搜尋資料',
            itemUnit: '項目',
            itemsUnit: '項目'
        },
        Upload: {
            uploading: '正在上傳...',
            removeFile: '刪除檔案',
            uploadError: '上傳失敗',
            previewFile: '檔案預覽'
        },
        Empty: {
            description: '無此資料'
        }
    };

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    exports.NzI18nModule = NzI18nModule;
    exports.NzI18nService = NzI18nService;
    exports.NZ_DATE_CONFIG = NZ_DATE_CONFIG;
    exports.ar_EG = ar_EG;
    exports.bg_BG = bg_BG;
    exports.ca_ES = ca_ES;
    exports.cs_CZ = cs_CZ;
    exports.da_DK = da_DK;
    exports.de_DE = de_DE;
    exports.el_GR = el_GR;
    exports.en_GB = en_GB;
    exports.en_US = en_US;
    exports.es_ES = es_ES;
    exports.et_EE = et_EE;
    exports.fa_IR = fa_IR;
    exports.fi_FI = fi_FI;
    exports.fr_BE = fr_BE;
    exports.fr_FR = fr_FR;
    exports.is_IS = is_IS;
    exports.it_IT = it_IT;
    exports.ja_JP = ja_JP;
    exports.ko_KR = ko_KR;
    exports.nb_NO = nb_NO;
    exports.nl_BE = nl_BE;
    exports.nl_NL = nl_NL;
    exports.pl_PL = pl_PL;
    exports.pt_BR = pt_BR;
    exports.pt_PT = pt_PT;
    exports.ru_RU = ru_RU;
    exports.sk_SK = sk_SK;
    exports.sl_SI = sl_SI;
    exports.sr_RS = sr_RS;
    exports.sv_SE = sv_SE;
    exports.th_TH = th_TH;
    exports.tr_TR = tr_TR;
    exports.uk_UA = uk_UA;
    exports.vi_VN = vi_VN;
    exports.zh_CN = zh_CN;
    exports.zh_TW = zh_TW;
    exports.NZ_I18N = NZ_I18N;
    exports.NZ_DATE_LOCALE = NZ_DATE_LOCALE;
    exports.DATE_HELPER_SERVICE_FACTORY = DATE_HELPER_SERVICE_FACTORY;
    exports.DateHelperService = DateHelperService;
    exports.DateHelperByDateFns = DateHelperByDateFns;
    exports.DateHelperByDatePipe = DateHelperByDatePipe;
    exports.NzI18nPipe = NzI18nPipe;

    Object.defineProperty(exports, '__esModule', { value: true });

})));

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1pMThuLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci96aF9DTi50cyIsIm5vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvemhfQ04udHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvemhfQ04udHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi96aF9DTi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy96aF9DTi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL256LWkxOG4udG9rZW4udHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9uei1pMThuLnNlcnZpY2UudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9uei1pMThuLnBpcGUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9uei1pMThuLm1vZHVsZS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2RhdGUtY29uZmlnLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vZGF0ZS1oZWxwZXIuc2VydmljZS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9hcl9FRy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9hcl9FRy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9hcl9FRy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2FyX0VHLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2FyX0VHLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL2JnX0JHLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL2JnX0JHLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL2JnX0JHLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vYmdfQkcudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvYmdfQkcudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvY2FfRVMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvY2FfRVMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvY2FfRVMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9jYV9FUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYV9FUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9jc19DWi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9jc19DWi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9jc19DWi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2NzX0NaLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NzX0NaLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL2RhX0RLLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL2RhX0RLLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL2RhX0RLLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vZGFfREsudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGFfREsudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvZGVfREUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvZGVfREUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvZGVfREUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9kZV9ERS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kZV9ERS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9lbF9HUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9lbF9HUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9lbF9HUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2VsX0dSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2VsX0dSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL2VuX0dCLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL2VuX0dCLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL2VuX0dCLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vZW5fR0IudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZW5fR0IudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvZW5fVVMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvZW5fVVMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvZW5fVVMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9lbl9VUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9lbl9VUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9lc19FUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9lc19FUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9lc19FUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2VzX0VTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2VzX0VTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL2V0X0VFLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL2V0X0VFLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL2V0X0VFLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vZXRfRUUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZXRfRUUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvZmFfSVIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvZmFfSVIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvZmFfSVIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9mYV9JUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9mYV9JUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9maV9GSS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9maV9GSS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9maV9GSS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2ZpX0ZJLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2ZpX0ZJLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL2ZyX0JFLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL2ZyX0JFLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL2ZyX0JFLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vZnJfQkUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZnJfQkUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvZnJfRlIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvZnJfRlIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvZnJfRlIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9mcl9GUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9mcl9GUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9pc19JUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9pc19JUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9pc19JUy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2lzX0lTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2lzX0lTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL2l0X0lULnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL2l0X0lULnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL2l0X0lULnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vaXRfSVQudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvaXRfSVQudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvamFfSlAudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvamFfSlAudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvamFfSlAudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9qYV9KUC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9qYV9KUC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9rb19LUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9rb19LUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9rb19LUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL2tvX0tSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2tvX0tSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL25iX05PLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL25iX05PLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL25iX05PLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vbmJfTk8udHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvbmJfTk8udHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvbmxfQkUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvbmxfQkUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvbmxfQkUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9ubF9CRS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9ubF9CRS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9ubF9OTC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9ubF9OTC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9ubF9OTC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL25sX05MLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL25sX05MLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL3BsX1BMLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL3BsX1BMLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL3BsX1BMLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vcGxfUEwudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGxfUEwudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvcHRfQlIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvcHRfQlIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvcHRfQlIudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9wdF9CUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wdF9CUi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9wdF9QVC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9wdF9QVC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9wdF9QVC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL3B0X1BULnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3B0X1BULnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL3J1X1JVLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL3J1X1JVLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL3J1X1JVLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vcnVfUlUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcnVfUlUudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvc2tfU0sudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvc2tfU0sudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvc2tfU0sudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9za19TSy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9za19TSy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci9zbF9TSS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci9zbF9TSS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci9zbF9TSS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL3NsX1NJLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3NsX1NJLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL3NyX1JTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL3NyX1JTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL3NyX1JTLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vc3JfUlMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvc3JfUlMudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvY2FsZW5kYXIvc3ZfU0UudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdGltZS1waWNrZXIvc3ZfU0UudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvc3ZfU0UudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi9zdl9TRS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9zdl9TRS50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci90aF9USC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci90aF9USC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci90aF9USC50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL3RoX1RILnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RoX1RILnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL3RyX1RSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL3RyX1RSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RyX1RSLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2NhbGVuZGFyL3VrX1VBLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3RpbWUtcGlja2VyL3VrX1VBLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL2RhdGUtcGlja2VyL3VrX1VBLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3BhZ2luYXRpb24vdWtfVUEudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvdWtfVUEudHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvZGF0ZS1waWNrZXIvdmlfVk4udHMiLCJuZzovL25nLXpvcnJvLWFudGQvaTE4bi9sYW5ndWFnZXMvcGFnaW5hdGlvbi92aV9WTi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci92aV9WTi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy92aV9WTi50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9jYWxlbmRhci96aF9UVy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy90aW1lLXBpY2tlci96aF9UVy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9kYXRlLXBpY2tlci96aF9UVy50cyIsIm5nOi8vbmctem9ycm8tYW50ZC9pMThuL2xhbmd1YWdlcy9wYWdpbmF0aW9uL3poX1RXLnRzIiwibmc6Ly9uZy16b3Jyby1hbnRkL2kxOG4vbGFuZ3VhZ2VzL3poX1RXLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnw6TCu8KKw6XCpMKpJyxcbiAgbm93OiAnw6bCrcKkw6XCiMK7JyxcbiAgYmFja1RvVG9kYXk6ICfDqMK/wpTDpcKbwp7DpMK7worDpcKkwqknLFxuICBvazogJ8OnwqHCrsOlwq7CmicsXG4gIHRpbWVTZWxlY3Q6ICfDqcKAwonDpsKLwqnDpsKXwrbDqcKXwrQnLFxuICBkYXRlU2VsZWN0OiAnw6nCgMKJw6bCi8Kpw6bCl8Klw6bCnMKfJyxcbiAgY2xlYXI6ICfDpsK4woXDqcKZwqQnLFxuICBtb250aDogJ8OmwpzCiCcsXG4gIHllYXI6ICfDpcK5wrQnLFxuICBwcmV2aW91c01vbnRoOiAnw6TCuMKKw6TCuMKqw6bCnMKIICjDp8K/wrvDqcKhwrXDpMK4worDqcKUwq4pJyxcbiAgbmV4dE1vbnRoOiAnw6TCuMKLw6TCuMKqw6bCnMKIICjDp8K/wrvDqcKhwrXDpMK4wovDqcKUwq4pJyxcbiAgbW9udGhTZWxlY3Q6ICfDqcKAwonDpsKLwqnDpsKcwojDpMK7wr0nLFxuICB5ZWFyU2VsZWN0OiAnw6nCgMKJw6bCi8Kpw6XCucK0w6TCu8K9JyxcbiAgZGVjYWRlU2VsZWN0OiAnw6nCgMKJw6bCi8Kpw6XCucK0w6TCu8KjJyxcbiAgeWVhckZvcm1hdDogJ1lZWVnDpcK5wrQnLFxuICBkYXlGb3JtYXQ6ICdEw6bCl8KlJyxcbiAgZGF0ZUZvcm1hdDogJ1lZWVnDpcK5wrRNw6bCnMKIRMOmwpfCpScsXG4gIGRhdGVUaW1lRm9ybWF0OiAnWVlZWcOlwrnCtE3DpsKcwohEw6bCl8KlIEhIw6bCl8K2bW3DpcKIwoZzc8OnwqfCkicsXG4gIHByZXZpb3VzWWVhcjogJ8OkwrjCisOkwrjCgMOlwrnCtCAoQ29udHJvbMOpwpTCrsOlworCoMOlwrfCpsOmwpbCucOlwpDCkcOpwpTCriknLFxuICBuZXh0WWVhcjogJ8OkwrjCi8OkwrjCgMOlwrnCtCAoQ29udHJvbMOpwpTCrsOlworCoMOlwo/Cs8OmwpbCucOlwpDCkcOpwpTCriknLFxuICBwcmV2aW91c0RlY2FkZTogJ8OkwrjCisOkwrjCgMOlwrnCtMOkwrvCoycsXG4gIG5leHREZWNhZGU6ICfDpMK4wovDpMK4woDDpcK5wrTDpMK7wqMnLFxuICBwcmV2aW91c0NlbnR1cnk6ICfDpMK4worDpMK4woDDpMK4wpbDp8K6wqonLFxuICBuZXh0Q2VudHVyeTogJ8OkwrjCi8OkwrjCgMOkwrjClsOnwrrCqidcbn07XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnw6jCr8K3w6nCgMKJw6bCi8Kpw6bCl8K2w6nCl8K0J1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci96aF9DTic7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci96aF9DTic7XG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnw6jCr8K3w6nCgMKJw6bCi8Kpw6bCl8Klw6bCnMKfJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ8OlwrzCgMOlwqfCi8OmwpfCpcOmwpzCnycsICfDp8K7wpPDpsKdwp/DpsKXwqXDpsKcwp8nXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBzaG91bGQgYWRkIHdoaXRlc3BhY2UgYmV0d2VlbiBjaGFyIGluIEJ1dHRvblxubG9jYWxlLmxhbmcub2sgPSAnw6fCocKuIMOlwq7Cmic7XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnw6bCncKhL8OpwqHCtScsXG4gIGp1bXBfdG86ICfDqMK3wrPDqMKHwrMnLFxuICBqdW1wX3RvX2NvbmZpcm06ICfDp8Khwq7DpcKuwponLFxuICBwYWdlOiAnw6nCocK1JyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICfDpMK4worDpMK4woDDqcKhwrUnLFxuICBuZXh0X3BhZ2U6ICfDpMK4wovDpMK4woDDqcKhwrUnLFxuICBwcmV2XzU6ICfDpcKQwpHDpcKJwo0gNSDDqcKhwrUnLFxuICBuZXh0XzU6ICfDpcKQwpHDpcKQwo4gNSDDqcKhwrUnLFxuICBwcmV2XzM6ICfDpcKQwpHDpcKJwo0gMyDDqcKhwrUnLFxuICBuZXh0XzM6ICfDpcKQwpHDpcKQwo4gMyDDqcKhwrUnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL3poX0NOJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvemhfQ04nO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL3poX0NOJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvemhfQ04nO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ3poLWNuJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIC8vIGxvY2FsZXMgZm9yIGFsbCBjb21vcG9uZW50c1xuICBnbG9iYWw6IHtcbiAgICBwbGFjZWhvbGRlcjogJ8Oowq/Ct8OpwoDCicOmwovCqSdcbiAgfSxcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ8Onwq3Cm8OpwoDCiScsXG4gICAgZmlsdGVyQ29uZmlybTogJ8OnwqHCrsOlwq7CmicsXG4gICAgZmlsdGVyUmVzZXQ6ICfDqcKHwo3Dp8K9wq4nLFxuICAgIHNlbGVjdEFsbDogJ8OlwoXCqMOpwoDCicOlwr3Ck8OpwqHCtScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnw6XCj8KNw6nCgMKJw6XCvcKTw6nCocK1JyxcbiAgICBzb3J0VGl0bGU6ICfDpsKOwpLDpcK6wo8nXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnw6fCocKuw6XCrsKaJyxcbiAgICBjYW5jZWxUZXh0OiAnw6XCj8KWw6bCtsKIJyxcbiAgICBqdXN0T2tUZXh0OiAnw6fCn8Klw6nCgcKTw6TCusKGJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgY2FuY2VsVGV4dDogJ8Olwo/ClsOmwrbCiCcsXG4gICAgb2tUZXh0OiAnw6fCocKuw6XCrsKaJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnw6jCr8K3w6jCvsKTw6XChcKlw6bCkMKcw6fCtMKiw6XChsKFw6XCrsK5JyxcbiAgICBpdGVtVW5pdDogJ8OpwqHCuScsXG4gICAgaXRlbXNVbml0OiAnw6nCocK5J1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDpsKWwofDpMK7wrbDpMK4worDpMK8wqDDpMK4wq0nLFxuICAgIHJlbW92ZUZpbGU6ICfDpcKIwqDDqcKZwqTDpsKWwofDpMK7wrYnLFxuICAgIHVwbG9hZEVycm9yOiAnw6TCuMKKw6TCvMKgw6nClMKZw6jCr8KvJyxcbiAgICBwcmV2aWV3RmlsZTogJ8OpwqLChMOowqfCiMOmwpbCh8OkwrvCtidcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ8OmwprCgsOmwpfCoMOmwpXCsMOmwo3CridcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRlTG9jYWxlLCBOekkxOG5JbnRlcmZhY2UgfSBmcm9tICcuL256LWkxOG4uaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IE5aX0kxOE4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TnpJMThuSW50ZXJmYWNlPignbnotaTE4bicpO1xuXG4vKiogTG9jYWxlIGZvciBkYXRlIG9wZXJhdGlvbnMsIHNob3VsZCBpbXBvcnQgZnJvbSBkYXRlLWZucywgc2VlIGV4YW1wbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL3YxLjMwLjEvc3JjL2xvY2FsZS96aF9jbi9pbmRleC5qcyAqL1xuZXhwb3J0IGNvbnN0IE5aX0RBVEVfTE9DQUxFID0gbmV3IEluamVjdGlvblRva2VuPERhdGVMb2NhbGU+KCduei1kYXRlLWxvY2FsZScpO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbmRleGFibGVPYmplY3QgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUnO1xuXG5pbXBvcnQgemhfQ04gZnJvbSAnLi9sYW5ndWFnZXMvemhfQ04nO1xuaW1wb3J0IHsgRGF0ZUxvY2FsZSwgTnpJMThuSW50ZXJmYWNlIH0gZnJvbSAnLi9uei1pMThuLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOWl9EQVRFX0xPQ0FMRSwgTlpfSTE4TiB9IGZyb20gJy4vbnotaTE4bi50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE56STE4blNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2NhbGU6IE56STE4bkludGVyZmFjZTtcbiAgcHJpdmF0ZSBfY2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOekkxOG5JbnRlcmZhY2U+KHRoaXMuX2xvY2FsZSk7XG4gIHByaXZhdGUgZGF0ZUxvY2FsZTogRGF0ZUxvY2FsZTtcblxuICBnZXQgbG9jYWxlQ2hhbmdlKCk6IE9ic2VydmFibGU8TnpJMThuSW50ZXJmYWNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTlpfSTE4TikgbG9jYWxlOiBOekkxOG5JbnRlcmZhY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChOWl9EQVRFX0xPQ0FMRSkgZGF0ZUxvY2FsZTogRGF0ZUxvY2FsZVxuICApIHtcbiAgICB0aGlzLnNldExvY2FsZShsb2NhbGUgfHwgemhfQ04pO1xuICAgIHRoaXMuc2V0RGF0ZUxvY2FsZShkYXRlTG9jYWxlIHx8IG51bGwpO1xuICB9XG5cbiAgLy8gW05PVEVdIFBlcmZvcm1hbmNlIGlzc3VlOiB0aGlzIG1ldGhvZCBtYXkgY2FsbGVkIGJ5IGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb25zXG4gIC8vIFRPRE86IGNhY2hlIG1vcmUgZGVlcGx5IHBhdGhzIGZvciBwZXJmb3JtYW5jZVxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gIHRyYW5zbGF0ZShwYXRoOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiBzdHJpbmcge1xuICAgIC8vIHRoaXMuX2xvZ2dlci5kZWJ1ZyhgW056STE4blNlcnZpY2VdIFRyYW5zbGF0aW5nKCR7dGhpcy5fbG9jYWxlLmxvY2FsZX0pOiAke3BhdGh9YCk7XG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLl9nZXRPYmplY3RQYXRoKHRoaXMuX2xvY2FsZSwgcGF0aCkgYXMgc3RyaW5nO1xuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goa2V5ID0+IChjb250ZW50ID0gY29udGVudC5yZXBsYWNlKG5ldyBSZWdFeHAoYCUke2tleX0lYCwgJ2cnKSwgZGF0YVtrZXldKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldC9DaGFuZ2UgY3VycmVudCBsb2NhbGUgZ2xvYmFsbHkgdGhyb3VnaG91dCB0aGUgV0hPTEUgYXBwbGljYXRpb25cbiAgICogW05PVEVdIElmIGNhbGxlZCBhdCBydW50aW1lLCByZW5kZXJlZCBpbnRlcmZhY2UgbWF5IG5vdCBjaGFuZ2UgYWxvbmcgd2l0aCB0aGUgbG9jYWxlIGNoYW5nZSAoYmVjYXVzZSB0aGlzIGRvIG5vdCB0cmlnZ2VyIGFub3RoZXIgcmVuZGVyIHNjaGVkdWxlKVxuICAgKiBAcGFyYW0gbG9jYWxlIFRoZSB0cmFuc2xhdGluZyBsZXR0ZXJzXG4gICAqL1xuICBzZXRMb2NhbGUobG9jYWxlOiBOekkxOG5JbnRlcmZhY2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbG9jYWxlICYmIHRoaXMuX2xvY2FsZS5sb2NhbGUgPT09IGxvY2FsZS5sb2NhbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlO1xuICAgIHRoaXMuX2NoYW5nZS5uZXh0KGxvY2FsZSk7XG4gIH1cblxuICBnZXRMb2NhbGUoKTogTnpJMThuSW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICB9XG5cbiAgZ2V0TG9jYWxlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlID8gdGhpcy5fbG9jYWxlLmxvY2FsZSA6ICcnO1xuICB9XG5cbiAgc2V0RGF0ZUxvY2FsZShkYXRlTG9jYWxlOiBEYXRlTG9jYWxlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlTG9jYWxlID0gZGF0ZUxvY2FsZTtcbiAgfVxuXG4gIGdldERhdGVMb2NhbGUoKTogRGF0ZUxvY2FsZSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZUxvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbG9jYWxlIGRhdGFcbiAgICogQHBhcmFtIHBhdGggZG90IHBhdGhzIGZvciBmaW5kaW5nIGV4aXN0IHZhbHVlIGZyb20gbG9jYWxlIGRhdGEsIGVnLiBcImEuYi5jXCJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSByZXN1bHQgaXMgbm90IFwidHJ1dGh5XCJcbiAgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgZ2V0TG9jYWxlRGF0YShwYXRoPzogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHBhdGggPyB0aGlzLl9nZXRPYmplY3RQYXRoKHRoaXMuX2xvY2FsZSwgcGF0aCkgOiB0aGlzLl9sb2NhbGU7XG4gICAgcmV0dXJuIHJlc3VsdCB8fCBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHByaXZhdGUgX2dldE9iamVjdFBhdGgob2JqOiBJbmRleGFibGVPYmplY3QsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB8IG9iamVjdCB8IGFueSB7XG4gICAgbGV0IHJlcyA9IG9iajtcbiAgICBjb25zdCBwYXRocyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBjb25zdCBkZXB0aCA9IHBhdGhzLmxlbmd0aDtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIHdoaWxlIChyZXMgJiYgaW5kZXggPCBkZXB0aCkge1xuICAgICAgcmVzID0gcmVzW3BhdGhzW2luZGV4KytdXTtcbiAgICB9XG4gICAgcmV0dXJuIGluZGV4ID09PSBkZXB0aCA/IHJlcyA6IG51bGw7XG4gIH1cbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICcuL256LWkxOG4uc2VydmljZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ256STE4bidcbn0pXG5leHBvcnQgY2xhc3MgTnpJMThuUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sb2NhbGU6IE56STE4blNlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKHBhdGg6IHN0cmluZywga2V5VmFsdWU/OiBvYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGUudHJhbnNsYXRlKHBhdGgsIGtleVZhbHVlKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IExvZ2dlck1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZSc7XG5cbmltcG9ydCB7IE56STE4blBpcGUgfSBmcm9tICcuL256LWkxOG4ucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtMb2dnZXJNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtOekkxOG5QaXBlXSxcbiAgZXhwb3J0czogW056STE4blBpcGVdLFxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgTnpJMThuTW9kdWxlIHt9XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IE5aX0RBVEVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPE56RGF0ZUNvbmZpZz4oJ2RhdGUtY29uZmlnJyk7XG5cbmV4cG9ydCBjb25zdCBOWl9EQVRFX0NPTkZJR19ERUZBVUxUOiBOekRhdGVDb25maWcgPSB7XG4gIGZpcnN0RGF5T2ZXZWVrOiB1bmRlZmluZWRcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZURhdGVDb25maWcoY29uZmlnOiBOekRhdGVDb25maWcpOiBOekRhdGVDb25maWcge1xuICByZXR1cm4geyAuLi5OWl9EQVRFX0NPTkZJR19ERUZBVUxULCAuLi5jb25maWcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOekRhdGVDb25maWcge1xuICAvKiogQ3VzdG9taXplIHRoZSBmaXJzdCBkYXkgb2YgYSB3ZWVrICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGZuc0Zvcm1hdCBmcm9tICdkYXRlLWZucy9mb3JtYXQnO1xuaW1wb3J0IGZuc0dldElTT1dlZWsgZnJvbSAnZGF0ZS1mbnMvZ2V0X2lzb193ZWVrJztcbmltcG9ydCBmbnNQYXJzZSBmcm9tICdkYXRlLWZucy9wYXJzZSc7XG5pbXBvcnQgeyBtZXJnZURhdGVDb25maWcsIE56RGF0ZUNvbmZpZywgTlpfREFURV9DT05GSUcgfSBmcm9tICcuL2RhdGUtY29uZmlnJztcbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICcuL256LWkxOG4uc2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBEQVRFX0hFTFBFUl9TRVJWSUNFX0ZBQ1RPUlkoXG4gIGluamVjdG9yOiBJbmplY3RvcixcbiAgY29uZmlnOiBOekRhdGVDb25maWcsXG4gIGRhdGVQaXBlOiBEYXRlUGlwZVxuKTogRGF0ZUhlbHBlclNlcnZpY2Uge1xuICBjb25zdCBpMThuID0gaW5qZWN0b3IuZ2V0KE56STE4blNlcnZpY2UpO1xuICByZXR1cm4gaTE4bi5nZXREYXRlTG9jYWxlKClcbiAgICA/IG5ldyBEYXRlSGVscGVyQnlEYXRlRm5zKGkxOG4sIGNvbmZpZylcbiAgICA6IG5ldyBEYXRlSGVscGVyQnlEYXRlUGlwZShpMThuLCBjb25maWcsIGRhdGVQaXBlKTtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBEYXRlSGVscGVyU2VydmljZShUb2tlbiB2aWEgQ2xhc3MpXG4gKiBDb21wYXRpYmlsaXR5OiBjb21wYWN0IGZvciBvcmlnaW5hbCB1c2FnZSBieSBkZWZhdWx0IHdoaWNoIHVzaW5nIERhdGVQaXBlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICB1c2VGYWN0b3J5OiBEQVRFX0hFTFBFUl9TRVJWSUNFX0ZBQ1RPUlksXG4gIGRlcHM6IFtJbmplY3RvciwgW25ldyBPcHRpb25hbCgpLCBOWl9EQVRFX0NPTkZJR10sIERhdGVQaXBlXVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlSGVscGVyU2VydmljZSB7XG4gIHJlbHlPbkRhdGVQaXBlOiBib29sZWFuID0gdGhpcyBpbnN0YW5jZW9mIERhdGVIZWxwZXJCeURhdGVQaXBlOyAvLyBJbmRpY2F0ZSB3aGV0aGVyIHRoaXMgc2VydmljZSBpcyByZWx5IG9uIERhdGVQaXBlXG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGkxOG46IE56STE4blNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoTlpfREFURV9DT05GSUcpIHByb3RlY3RlZCBjb25maWc6IE56RGF0ZUNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VEYXRlQ29uZmlnKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIGFic3RyYWN0IGdldElTT1dlZWsoZGF0ZTogRGF0ZSk6IG51bWJlcjtcbiAgYWJzdHJhY3QgZ2V0Rmlyc3REYXlPZldlZWsoKTogV2Vla0RheUluZGV4O1xuICBhYnN0cmFjdCBmb3JtYXQoZGF0ZTogRGF0ZSwgZm9ybWF0U3RyOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgcGFyc2VEYXRlKHRleHQ6IHN0cmluZyk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gZm5zUGFyc2UodGV4dCk7XG4gIH1cblxuICBwYXJzZVRpbWUodGV4dDogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBmbnNQYXJzZShgMTk3MC0wMS0wMSAke3RleHR9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRlSGVscGVyIHRoYXQgaGFuZGxlcyBkYXRlIGZvcm1hdHMgd2l0aCBkYXRlLWZuc1xuICovXG5leHBvcnQgY2xhc3MgRGF0ZUhlbHBlckJ5RGF0ZUZucyBleHRlbmRzIERhdGVIZWxwZXJTZXJ2aWNlIHtcbiAgZ2V0SVNPV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZm5zR2V0SVNPV2VlayhkYXRlKTtcbiAgfVxuXG4gIC8vIFRPRE86IFVzZSBkYXRlLWZucydzIFwid2Vla1N0YXJ0c09uXCIgdG8gc3VwcG9ydCBkaWZmZXJlbnQgbG9jYWxlIHdoZW4gXCJjb25maWcuZmlyc3REYXlPZldlZWtcIiBpcyBudWxsXG4gIC8vIHdoZW4gdjIuMCBpcyByZWFkeTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvdjIuMC4wLWFscGhhLjI3L3NyYy9sb2NhbGUvZW4tVVMvaW5kZXguanMjTDIzXG4gIGdldEZpcnN0RGF5T2ZXZWVrKCk6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDYge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5maXJzdERheU9mV2VlayA9PSBudWxsID8gMSA6IHRoaXMuY29uZmlnLmZpcnN0RGF5T2ZXZWVrO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIGRhdGVcbiAgICogQHNlZSBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL2Zvcm1hdCNkZXNjcmlwdGlvblxuICAgKiBAcGFyYW0gZGF0ZSBEYXRlXG4gICAqIEBwYXJhbSBmb3JtYXRTdHIgZm9ybWF0IHN0cmluZ1xuICAgKi9cbiAgZm9ybWF0KGRhdGU6IERhdGUsIGZvcm1hdFN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm5zRm9ybWF0KGRhdGUsIGZvcm1hdFN0ciwgeyBsb2NhbGU6IHRoaXMuaTE4bi5nZXREYXRlTG9jYWxlKCkgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRlSGVscGVyIHRoYXQgaGFuZGxlcyBkYXRlIGZvcm1hdHMgd2l0aCBhbmd1bGFyJ3MgZGF0ZS1waXBlXG4gKiBbQlVHXSBVc2UgRGF0ZVBpcGUgbWF5IGNhdXNlIG5vbi1zdGFuZGFyZCB3ZWVrIGJ1Zywgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9pc3N1ZXMvMjQwNlxuICpcbiAqIEBkZXByZWNhdGVkIE1heWJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciB2ZXJzaW9uIGR1ZSB0byB0aGlzIHNlcmlvdXMgYnVnXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlSGVscGVyQnlEYXRlUGlwZSBleHRlbmRzIERhdGVIZWxwZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgaTE4bjogTnpJMThuU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5aX0RBVEVfQ09ORklHKSBjb25maWc6IE56RGF0ZUNvbmZpZyxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZVxuICApIHtcbiAgICBzdXBlcihpMThuLCBjb25maWcpO1xuICB9XG5cbiAgZ2V0SVNPV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gK3RoaXMuZm9ybWF0KGRhdGUsICd3Jyk7XG4gIH1cblxuICBnZXRGaXJzdERheU9mV2VlaygpOiBXZWVrRGF5SW5kZXgge1xuICAgIGlmICh0aGlzLmNvbmZpZy5maXJzdERheU9mV2VlayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmkxOG4uZ2V0TG9jYWxlSWQoKTtcbiAgICAgIHJldHVybiBsb2NhbGUgJiYgWyd6aC1jbicsICd6aC10dyddLmluZGV4T2YobG9jYWxlLnRvTG93ZXJDYXNlKCkpID4gLTEgPyAxIDogMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZpcnN0RGF5T2ZXZWVrO1xuICB9XG5cbiAgZm9ybWF0KGRhdGU6IERhdGUsIGZvcm1hdFN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGZvcm1hdFN0ciwgdW5kZWZpbmVkLCB0aGlzLmkxOG4uZ2V0TG9jYWxlSWQoKSkhIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGF0aWJsZSB0cmFuc2xhdGUgdGhlIG1vbWVudC1saWtlIGZvcm1hdCBwYXR0ZXJuIHRvIGFuZ3VsYXIncyBwYXR0ZXJuXG4gICAqIFdoeT8gRm9yIG5vdywgd2UgbmVlZCB0byBzdXBwb3J0IHRoZSBleGlzdGluZyBsYW5ndWFnZSBmb3JtYXRzIGluIEFudEQsIGFuZCBBbnREIHVzZXMgdGhlIGRlZmF1bHQgdGVtcG9yYWwgc3ludGF4LlxuICAgKlxuICAgKiBUT0RPOiBjb21wYXJlIGFuZCBjb21wbGV0ZSBhbGwgZm9ybWF0IHBhdHRlcm5zXG4gICAqIEVhY2ggZm9ybWF0IGRvY3MgYXMgYmVsb3c6XG4gICAqIEBsaW5rIGh0dHBzOi8vbW9tZW50anMuY29tL2RvY3MvIy9kaXNwbGF5aW5nL2Zvcm1hdC9cbiAgICogQGxpbmsgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vRGF0ZVBpcGUjZGVzY3JpcHRpb25cbiAgICogQHBhcmFtIGZvcm1hdCBpbnB1dCBmb3JtYXQgcGF0dGVyblxuICAgKi9cbiAgdHJhbnNDb21wYXRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICBmb3JtYXQgJiZcbiAgICAgIGZvcm1hdFxuICAgICAgICAucmVwbGFjZSgvWS9nLCAneScpIC8vIG9ubHkgc3VwcG9ydCB5LCB5eSwgeXl5LCB5eXl5XG4gICAgICAgIC5yZXBsYWNlKC9EL2csICdkJylcbiAgICApOyAvLyBkLCBkZCByZXByZXNlbnQgb2YgRCwgREQgZm9yIG1vbWVudGpzLCBvdGhlcnMgYXJlIG5vdCBzdXBwb3J0XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFdlZWtEYXlJbmRleCA9IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ8OYwqfDmcKEw5nCisOZwojDmcKFJyxcbiAgbm93OiAnw5jCp8OZwoTDmMKjw5nChicsXG4gIGJhY2tUb1RvZGF5OiAnw5jCp8OZwoTDmMK5w5nCiMOYwq/DmMKpIMOYwqXDmcKEw5nCiSDDmMKnw5nChMOZworDmcKIw5nChScsXG4gIG9rOiAnw5jCqsOYwqPDmcKDw5nCisOYwq8nLFxuICBjbGVhcjogJ8OZwoXDmMKzw5jCrScsXG4gIG1vbnRoOiAnw5jCp8OZwoTDmMK0w5nCh8OYwrEnLFxuICB5ZWFyOiAnw5jCp8OZwoTDmMKzw5nChsOYwqknLFxuICB0aW1lU2VsZWN0OiAnw5jCp8OYwq7DmMKqw5nCisOYwqfDmMKxIMOYwqfDmcKEw5nCiMOZwoLDmMKqJyxcbiAgZGF0ZVNlbGVjdDogJ8OYwqfDmMKuw5jCqsOZworDmMKnw5jCsSDDmMKnw5nChMOYwqrDmMKnw5jCscOZworDmMKuJyxcbiAgbW9udGhTZWxlY3Q6ICfDmMKnw5jCrsOYwqrDmcKKw5jCp8OYwrEgw5jCp8OZwoTDmMK0w5nCh8OYwrEnLFxuICB5ZWFyU2VsZWN0OiAnw5jCp8OYwq7DmMKqw5nCisOYwqfDmMKxIMOYwqfDmcKEw5jCs8OZwobDmMKpJyxcbiAgZGVjYWRlU2VsZWN0OiAnw5jCp8OYwq7DmMKqw5nCisOYwqfDmMKxIMOYwqfDmcKEw5jCucOZwoLDmMKvJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnTS9EL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdNL0QvWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ8OYwqfDmcKEw5jCtMOZwofDmMKxIMOYwqfDmcKEw5jCs8OYwqfDmMKow5nCgiAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ8OYwqfDmcKEw5jCtMOZwofDmMKxIMOYwqfDmcKEw5jCqsOYwqfDmcKEw5nCiShQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICfDmMKnw5nChMOYwrnDmMKnw5nChSDDmMKnw5nChMOYwrPDmMKnw5jCqMOZwoIgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnw5jCp8OZwoTDmMK5w5jCp8OZwoUgw5jCp8OZwoTDmMKqw5jCp8OZwoTDmcKJIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICfDmMKnw5nChMOYwrnDmcKCw5jCryDDmMKnw5nChMOYwrPDmMKnw5jCqMOZwoInLFxuICBuZXh0RGVjYWRlOiAnw5jCp8OZwoTDmMK5w5nCgsOYwq8gw5jCp8OZwoTDmMKqw5jCp8OZwoTDmcKJJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnw5jCp8OZwoTDmcKCw5jCscOZwoYgw5jCp8OZwoTDmMKzw5jCp8OYwqjDmcKCJyxcbiAgbmV4dENlbnR1cnk6ICfDmMKnw5nChMOZwoLDmMKxw5nChiDDmMKnw5nChMOYwqrDmMKnw5nChMOZwoknXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICfDmMKnw5jCrsOYwqrDmcKKw5jCp8OYwrEgw5jCp8OZwoTDmcKIw5nCgsOYwqonXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL2FyX0VHJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL2FyX0VHJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnw5jCp8OYwq7DmMKqw5nCisOYwqfDmMKxIMOYwqfDmcKEw5jCqsOYwqfDmMKxw5nCisOYwq4nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnw5jCp8OZwoTDmMKow5jCr8OYwqfDmcKKw5jCqScsICfDmMKnw5nChMOZwobDmcKHw5jCp8OZworDmMKpJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIMOYwqfDmcKEw5jCtcOZwoHDmMKtw5jCqScsXG4gIGp1bXBfdG86ICfDmMKnw5nChMOYwrDDmcKHw5jCp8OYwqggw5jCpcOZwoTDmcKJJyxcbiAganVtcF90b19jb25maXJtOiAnw5jCqsOYwqPDmcKDw5nCisOYwq8nLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICfDmMKnw5nChMOYwrXDmcKBw5jCrcOYwqkgw5jCp8OZwoTDmMKzw5jCp8OYwqjDmcKCw5jCqScsXG4gIG5leHRfcGFnZTogJ8OYwqfDmcKEw5jCtcOZwoHDmMKtw5jCqSDDmMKnw5nChMOYwqrDmMKnw5nChMOZworDmMKpJyxcbiAgcHJldl81OiAnw5jCrsOZwoXDmMKzIMOYwrXDmcKBw5jCrcOYwqfDmMKqIMOYwrPDmMKnw5jCqMOZwoLDmMKpJyxcbiAgbmV4dF81OiAnw5jCrsOZwoXDmMKzIMOYwrXDmcKBw5jCrcOYwqfDmMKqIMOYwqrDmMKnw5nChMOZworDmMKpJyxcbiAgcHJldl8zOiAnw5jCq8OZwoTDmMKnw5jCqyDDmMK1w5nCgcOYwq3DmMKnw5jCqiDDmMKzw5jCp8OYwqjDmcKCw5jCqScsXG4gIG5leHRfMzogJ8OYwqvDmcKEw5jCp8OYwqsgw5jCtcOZwoHDmMKtw5jCp8OYwqogw5jCqsOYwqfDmcKEw5nCisOYwqknXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL2FyX0VHJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvYXJfRUcnO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL2FyX0VHJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvYXJfRUcnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2FyJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICfDmMKnw5nChMOZwoHDmcKEw5jCp8OYwqrDmMKxJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnw5jCqsOYwqPDmcKDw5nCisOYwq8nLFxuICAgIGZpbHRlclJlc2V0OiAnw5jCpcOYwrnDmMKnw5jCr8OYwqkgw5jCtsOYwqjDmMK3JyxcbiAgICBzZWxlY3RBbGw6ICfDmMKnw5jCrsOYwqrDmcKKw5jCp8OYwrEgw5jCp8OZwoTDmcKDw5nChCcsXG4gICAgc2VsZWN0SW52ZXJ0OiAnw5jCpcOZwoTDmMK6w5jCp8OYwqEgw5jCp8OZwoTDmMKnw5jCrsOYwqrDmcKKw5jCp8OYwrEnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnw5jCqsOYwqPDmcKDw5nCisOYwq8nLFxuICAgIGNhbmNlbFRleHQ6ICfDmMKlw5nChMOYwrrDmMKnw5jCoScsXG4gICAganVzdE9rVGV4dDogJ8OYwqrDmMKjw5nCg8OZworDmMKvJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnw5jCqsOYwqPDmcKDw5nCisOYwq8nLFxuICAgIGNhbmNlbFRleHQ6ICfDmMKlw5nChMOYwrrDmMKnw5jCoSdcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ8OYwqfDmMKow5jCrcOYwqsgw5nCh8OZwobDmMKnJyxcbiAgICBpdGVtVW5pdDogJ8OYwrnDmcKGw5jCtcOYwrEnLFxuICAgIGl0ZW1zVW5pdDogJ8OYwrnDmcKGw5jCp8OYwrXDmMKxJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDmMKsw5jCp8OYwrHDmcKKIMOYwqfDmcKEw5jCscOZwoHDmMK5Li4uJyxcbiAgICByZW1vdmVGaWxlOiAnw5jCp8OYwq3DmMKww5nCgSDDmMKnw5nChMOZwoXDmcKEw5nCgScsXG4gICAgdXBsb2FkRXJyb3I6ICfDmcKFw5jCtMOZwoPDmcKEw5jCqSDDmcKBw5nCiSDDmMKnw5nChMOYwrHDmcKBw5jCuScsXG4gICAgcHJldmlld0ZpbGU6ICfDmMKnw5jCs8OYwqrDmMK5w5jCscOYwrYgw5jCp8OZwoTDmcKFw5nChMOZwoEnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICfDmcKEw5jCpyDDmMKqw5nCiMOYwqzDmMKvIMOYwqjDmcKKw5jCp8OZwobDmMKnw5jCqidcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnw5DClMOQwr3DkMK1w5HCgScsXG4gIG5vdzogJ8OQwqHDkMK1w5DCs8OQwrAnLFxuICBiYWNrVG9Ub2RheTogJ8OQwprDkcKKw5DCvCDDkMK0w5DCvcOQwrXDkcKBJyxcbiAgb2s6ICfDkMKUw5DCvsOQwrHDkcKAw5DCtScsXG4gIGNsZWFyOiAnw5DCmMOQwrfDkcKHw5DCuMORwoHDkcKCw5DCssOQwrDDkMK9w5DCtScsXG4gIG1vbnRoOiAnw5DCnMOQwrXDkcKBw5DCtcORwoYnLFxuICB5ZWFyOiAnw5DCk8OQwr7DkMK0w5DCuMOQwr3DkMKwJyxcbiAgdGltZVNlbGVjdDogJ8OQwpjDkMK3w5DCscOQwr7DkcKAIMOQwr3DkMKwIMORwofDkMKww5HCgScsXG4gIGRhdGVTZWxlY3Q6ICfDkMKYw5DCt8OQwrHDkMK+w5HCgCDDkMK9w5DCsCDDkMK0w5DCsMORwoLDkMKwJyxcbiAgbW9udGhTZWxlY3Q6ICfDkMKYw5DCt8OQwrHDkMK+w5HCgCDDkMK9w5DCsCDDkMK8w5DCtcORwoHDkMK1w5HChicsXG4gIHllYXJTZWxlY3Q6ICfDkMKYw5DCt8OQwrHDkMK+w5HCgCDDkMK9w5DCsCDDkMKzw5DCvsOQwrTDkMK4w5DCvcOQwrAnLFxuICBkZWNhZGVTZWxlY3Q6ICfDkMKUw5DCtcORwoHDkMK1w5HCgsOQwrjDkMK7w5DCtcORwoLDkMK4w5DCtScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0QgTSBZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnRCBNIFlZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICfDkMKfw5HCgMOQwrXDkMK0w5DCuMORwojDkMK1w5DCvSDDkMK8w5DCtcORwoHDkMK1w5HChiAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ8OQwqHDkMK7w5DCtcOQwrTDkMKyw5DCsMORwokgw5DCvMOQwrXDkcKBw5DCtcORwoYgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ8OQwp/DkMK+w5HCgcOQwrvDkMK1w5DCtMOQwr3DkMKwIMOQwrPDkMK+w5DCtMOQwrjDkMK9w5DCsCAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICfDkMKhw5DCu8OQwrXDkMK0w5DCssOQwrDDkcKJw5DCsCDDkMKzw5DCvsOQwrTDkMK4w5DCvcOQwrAgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ8OQwp/DkcKAw5DCtcOQwrTDkMK4w5HCiMOQwr3DkMK+IMOQwrTDkMK1w5HCgcOQwrXDkcKCw5DCuMOQwrvDkMK1w5HCgsOQwrjDkMK1JyxcbiAgbmV4dERlY2FkZTogJ8OQwqHDkMK7w5DCtcOQwrTDkMKyw5DCsMORwonDkMK+IMOQwrTDkMK1w5HCgcOQwrXDkcKCw5DCuMOQwrvDkMK1w5HCgsOQwrjDkMK1JyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnw5DCn8OQwr7DkcKBw5DCu8OQwrXDkMK0w5DCtcOQwr0gw5DCssOQwrXDkMK6JyxcbiAgbmV4dENlbnR1cnk6ICfDkMKhw5DCu8OQwrXDkMK0w5DCssOQwrDDkcKJIMOQwrLDkMK1w5DCuidcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ8OQwpjDkMK3w5DCscOQwr7DkcKAIMOQwr3DkMKwIMORwofDkMKww5HCgSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvYmdfQkcnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvYmdfQkcnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICfDkMKYw5DCt8OQwrHDkMK+w5HCgCDDkMK9w5DCsCDDkMK0w5DCsMORwoLDkMKwJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ8OQwp3DkMKww5HCh8OQwrDDkMK7w5DCvcOQwrAnLCAnw5DCmsORwoDDkMKww5DCucOQwr3DkMKwJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIMORwoHDkcKCw5HCgMOQwrDDkMK9w5DCuMORwobDkMKwJyxcbiAganVtcF90bzogJ8OQwprDkcKKw5DCvCcsXG4gIGp1bXBfdG9fY29uZmlybTogJ8OQwr/DkMK+w5HCgsOQwrLDkcKKw5HCgMOQwrbDkMK0w5DCsMOQwrLDkMKww5DCvCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ8OQwp/DkcKAw5DCtcOQwrTDkMK4w5HCiMOQwr3DkMKwIMORwoHDkcKCw5HCgMOQwrDDkMK9w5DCuMORwobDkMKwJyxcbiAgbmV4dF9wYWdlOiAnw5DCocOQwrvDkMK1w5DCtMOQwrLDkMKww5HCicOQwrAgw5HCgcORwoLDkcKAw5DCsMOQwr3DkMK4w5HChsOQwrAnLFxuICBwcmV2XzU6ICfDkMKfw5HCgMOQwrXDkMK0w5DCuMORwojDkMK9w5DCuCA1IMORwoHDkcKCw5HCgMOQwrDDkMK9w5DCuMORwobDkMK4JyxcbiAgbmV4dF81OiAnw5DCocOQwrvDkMK1w5DCtMOQwrLDkMKww5HCicOQwrggNSDDkcKBw5HCgsORwoDDkMKww5DCvcOQwrjDkcKGw5DCuCcsXG4gIHByZXZfMzogJ8OQwp/DkcKAw5DCtcOQwrTDkMK4w5HCiMOQwr3DkMK4IDMgw5HCgcORwoLDkcKAw5DCsMOQwr3DkMK4w5HChsOQwrgnLFxuICBuZXh0XzM6ICfDkMKhw5DCu8OQwrXDkMK0w5DCssOQwrDDkcKJw5DCuCAzIMORwoHDkcKCw5HCgMOQwrDDkMK9w5DCuMORwobDkMK4J1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9iZ19CRyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2JnX0JHJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9iZ19CRyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2JnX0JHJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdiZycsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnw5DCpMOQwrjDkMK7w5HCgsORwoDDkMK4w5HCgMOQwrDDkMK9w5DCtScsXG4gICAgZmlsdGVyQ29uZmlybTogJ8OQwpTDkMK+w5DCscORwoDDkMK1JyxcbiAgICBmaWx0ZXJSZXNldDogJ8OQwp3DkcKDw5DCu8ORwoDDkMK4w5DCsMOQwr3DkMK1JyxcbiAgICBzZWxlY3RBbGw6ICfDkMKYw5DCt8OQwrHDkMK+w5HCgCDDkMK9w5DCsCDDkcKCw5DCtcOQwrrDkcKDw5HCicOQwrAgw5HCgcORwoLDkcKAw5DCsMOQwr3DkMK4w5HChsOQwrAnLFxuICAgIHNlbGVjdEludmVydDogJ8OQwp7DkMKxw5HCgMORworDkcKJw5DCsMOQwr3DkMK1J1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ8OQwpTDkMK+w5DCscORwoDDkMK1JyxcbiAgICBjYW5jZWxUZXh0OiAnw5DCnsORwoLDkMK6w5DCsMOQwrcnLFxuICAgIGp1c3RPa1RleHQ6ICfDkMKUw5DCvsOQwrHDkcKAw5DCtSdcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ8OQwpTDkMK+w5DCscORwoDDkMK1JyxcbiAgICBjYW5jZWxUZXh0OiAnw5DCnsORwoLDkMK6w5DCsMOQwrcnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICfDkMKiw5HCisORwoDDkcKBw5DCtcOQwr3DkMK1JyxcbiAgICBpdGVtVW5pdDogJ8OQwrjDkMK3w5DCscOQwr7DkcKAJyxcbiAgICBpdGVtc1VuaXQ6ICfDkMK4w5DCt8OQwrHDkMK+w5HCgMOQwrgnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ8OQwprDkMKww5HCh8OQwrLDkMKww5DCvcOQwrUuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICfDkMKfw5HCgMOQwrXDkMK8w5DCsMORwoXDkMKyw5DCsMOQwr3DkMK1JyxcbiAgICB1cGxvYWRFcnJvcjogJ8OQwpPDkcKAw5DCtcORwojDkMK6w5DCsCDDkMK/w5HCgMOQwrggw5DCusOQwrDDkcKHw5DCssOQwrDDkMK9w5DCtcORwoLDkMK+JyxcbiAgICBwcmV2aWV3RmlsZTogJ8OQwp/DkcKAw5DCtcOQwrPDkMK7w5DCtcOQwrQnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICfDkMKdw5HCj8OQwrzDkMKwIMOQwrTDkMKww5DCvcOQwr3DkMK4J1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdBdnVpJyxcbiAgbm93OiAnQXJhJyxcbiAgYmFja1RvVG9kYXk6ICdUb3JuYXIgYSBhdnVpJyxcbiAgb2s6ICdBY2NlcHRhcicsXG4gIGNsZWFyOiAnTmV0ZWphcicsXG4gIG1vbnRoOiAnTWVzJyxcbiAgeWVhcjogJ0FueScsXG4gIHRpbWVTZWxlY3Q6ICdTZWxlY2Npb25hciBob3JhJyxcbiAgZGF0ZVNlbGVjdDogJ1NlbGVjY2lvbmFyIGRhdGEnLFxuICBtb250aFNlbGVjdDogJ0VzY29sbGlyIHVuIG1lcycsXG4gIHllYXJTZWxlY3Q6ICdFc2NvbGxpciB1biBhbnknLFxuICBkZWNhZGVTZWxlY3Q6ICdFc2NvbGxpciB1bmEgZMODwqhjYWRhJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC9NL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdEL00vWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ01lcyBhbnRlcmlvciAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ01lcyBzZWfDg8K8ZW50IChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdBbnkgYW50ZXJpb3IgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnTWVzIHNlZ8ODwrxlbnQgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ0TDg8KoY2FkYSBhbnRlcmlvcicsXG4gIG5leHREZWNhZGU6ICdEw4PCqGNhZGEgc2Vnw4PCvGVudCcsXG4gIHByZXZpb3VzQ2VudHVyeTogJ1NlZ2xlIGFudGVyaW9yJyxcbiAgbmV4dENlbnR1cnk6ICdTZWdsZSBzZWfDg8K8ZW50J1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnU2VsZWNjaW9uYXIgaG9yYSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvY2FfRVMnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvY2FfRVMnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdTZWxlY2Npb25hciBkYXRhJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ0RhdGEgaW5pY2lhbCcsICdEYXRhIGZpbmFsJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHDDg8KgZ2luYScsXG4gIGp1bXBfdG86ICdBbmFyIGEnLFxuICBqdW1wX3RvX2NvbmZpcm06ICdDb25maXJtYXInLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdQw4PCoGdpbmEgcHLDg8KodmlhJyxcbiAgbmV4dF9wYWdlOiAnUMODwqBnaW5hIHNlZ8ODwrxlbnQnLFxuICBwcmV2XzU6ICc1IHDDg8KgZ2luZXMgcHLDg8KodmllcycsXG4gIG5leHRfNTogJzUgcMODwqBnaW5lcyBzZWfDg8K8ZW50cycsXG4gIHByZXZfMzogJzMgcMODwqBnaW5lcyBwcsODwqh2aWVzJyxcbiAgbmV4dF8zOiAnMyBww4PCoGdpbmVzIHNlZ8ODwrxlbnRzJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9jYV9FUyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2NhX0VTJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9jYV9FUyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2NhX0VTJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdjYScsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdHJhciBNZW51JyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzdGFibGlyJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY2Npb25hciB0b3QnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydGlyIHNlbGVjY2nDg8KzJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ0FjY2VwdGFyJyxcbiAgICBjYW5jZWxUZXh0OiAnQ2FuY2Vsw4LCt2xhcicsXG4gICAganVzdE9rVGV4dDogJ0FjY2VwdGFyJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnQWNjZXB0YXInLFxuICAgIGNhbmNlbFRleHQ6ICdDYW5jZWzDgsK3bGFyJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQ2VyY2FyIGFxdcODwq0nLFxuICAgIGl0ZW1Vbml0OiAnZWxlbWVudCcsXG4gICAgaXRlbXNVbml0OiAnZWxlbWVudHMnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ1B1amFudC4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ0VsaW1pbmFyIGZpdHhlcicsXG4gICAgdXBsb2FkRXJyb3I6ICdFcnJvciBhbCBwdWphciBlbCBmaXR4ZXInLFxuICAgIHByZXZpZXdGaWxlOiAnVmlzdGEgcHLDg8KodmlhJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnTm8gaGkgaGEgZGFkZXMnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ0RuZXMnLFxuICBub3c6ICdOeW7Dg8KtJyxcbiAgYmFja1RvVG9kYXk6ICdacMOEwpt0IG5hIGRuZcOFwqFlaycsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ1Z5bWF6YXQnLFxuICBtb250aDogJ03DhMKbc8ODwq1jJyxcbiAgeWVhcjogJ1JvaycsXG4gIHRpbWVTZWxlY3Q6ICdWeWJyYXQgw4TCjWFzJyxcbiAgZGF0ZVNlbGVjdDogJ1Z5YnJhdCBkYXR1bScsXG4gIG1vbnRoU2VsZWN0OiAnVnliZXJ0ZSBtw4TCm3PDg8KtYycsXG4gIHllYXJTZWxlY3Q6ICdWeWJlcnRlIHJvaycsXG4gIGRlY2FkZVNlbGVjdDogJ1Z5YmVydGUgZGVrw4PCoWR1JyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC5NLllZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdELk0uWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ1DDhcKZZWRjaG96w4PCrSBtw4TCm3PDg8KtYyAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ07Dg8Khc2xlZHVqw4PCrWPDg8KtIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdQw4XCmWVkY2hvesODwq0gcm9rIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ07Dg8Khc2xlZHVqw4PCrWPDg8KtIHJvayAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnUMOFwpllZGNob3rDg8KtIGRla8ODwqFkYScsXG4gIG5leHREZWNhZGU6ICdOw4PCoXNsZWR1asODwq1jw4PCrSBkZWvDg8KhZGEnLFxuICBwcmV2aW91c0NlbnR1cnk6ICdQw4XCmWVkY2hvesODwq0gc3RvbGV0w4PCrScsXG4gIG5leHRDZW50dXJ5OiAnTsODwqFzbGVkdWrDg8KtY8ODwq0gc3RvbGV0w4PCrSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1Z5YnJhdCDDhMKNYXMnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL2NzX0NaJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL2NzX0NaJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnVnlicmF0IGRhdHVtJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ09kJywgJ0RvJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHN0cmFuYScsXG4gIGp1bXBfdG86ICdQw4XCmWVqw4PCrXQnLFxuICBqdW1wX3RvX2NvbmZpcm06ICdwb3R2cmRpdCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1DDhcKZZWRjaG96w4PCrSBzdHJhbmEnLFxuICBuZXh0X3BhZ2U6ICdOw4PCoXNsZWR1asODwq1jw4PCrSBzdHJhbmEnLFxuICBwcmV2XzU6ICdQw4XCmWVkY2hvesODwq1jaCA1IHN0cmFuJyxcbiAgbmV4dF81OiAnTsODwqFzbGVkdWrDg8KtY8ODwq1jaCA1IHN0cmFuJyxcbiAgcHJldl8zOiAnUMOFwpllZGNob3rDg8KtIDMgc3RyYW55JyxcbiAgbmV4dF8zOiAnTsODwqFzbGVkdWrDg8KtY8ODwq0gMyBzdHJhbnknXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL2NzX0NaJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvY3NfQ1onO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL2NzX0NaJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvY3NfQ1onO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2NzJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICdGaWx0cicsXG4gICAgZmlsdGVyQ29uZmlybTogJ1BvdHZyZGl0JyxcbiAgICBmaWx0ZXJSZXNldDogJ09ibm92aXQnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT2snLFxuICAgIGNhbmNlbFRleHQ6ICdTdG9ybm8nLFxuICAgIGp1c3RPa1RleHQ6ICdPaydcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ09rJyxcbiAgICBjYW5jZWxUZXh0OiAnU3Rvcm5vJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnVnlobGVkw4PCoXbDg8KhbsODwq0nLFxuICAgIGl0ZW1Vbml0OiAncG9sb8OFwr5rYScsXG4gICAgaXRlbXNVbml0OiAncG9sb8OFwr5laydcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnTmFocsODwqF2w4PCoW7Dg8KtLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnT2RzdHJhbml0IHNvdWJvcicsXG4gICAgdXBsb2FkRXJyb3I6ICdDaHliYSBww4XCmWkgbmFocsODwqF2w4PCoW7Dg8KtJyxcbiAgICBwcmV2aWV3RmlsZTogJ1pvYnJheml0IHNvdWJvcidcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ8OFwr3Dg8KhZG7Dg8KhIGRhdGEnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ0kgZGFnJyxcbiAgbm93OiAnTnUnLFxuICBiYWNrVG9Ub2RheTogJ0fDg8KlIHRpbCBpIGRhZycsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ0FubnVsbGVyJyxcbiAgbW9udGg6ICdNw4PCpW5lZCcsXG4gIHllYXI6ICfDg8KFcicsXG4gIHRpbWVTZWxlY3Q6ICdWw4PCpmxnIHRpZHNwdW5rdCcsXG4gIGRhdGVTZWxlY3Q6ICdWw4PCpmxnIGRhdG8nLFxuICBtb250aFNlbGVjdDogJ1bDg8KmbGcgbcODwqVuZWQnLFxuICB5ZWFyU2VsZWN0OiAnVsODwqZsZyDDg8KlcicsXG4gIGRlY2FkZVNlbGVjdDogJ1bDg8KmbGcgw4PCpXJ0aScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0QvTS9ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnRC9NL1lZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdGb3JyaWdlIG3Dg8KlbmVkKFBhZ2VVcCknLFxuICBuZXh0TW9udGg6ICdOw4PCpnN0ZSBtw4PCpW5lZCAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnRm9ycmlnZSDDg8KlciAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICdOw4PCpnN0ZSByIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdGb3JyaWdlIMODwqVydGknLFxuICBuZXh0RGVjYWRlOiAnTsODwqZzdGUgw4PCpXJ0aScsXG4gIHByZXZpb3VzQ2VudHVyeTogJ0ZvcnJpZ2Ugw4PCpXJodW5kcmVkZScsXG4gIG5leHRDZW50dXJ5OiAnTsODwqZzdGUgw4PCpXJodW5kcmVkZSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICAgIHBsYWNlaG9sZGVyOiAnVsODwqZsZyB0aWQnXG4gIH07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvZGFfREsnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvZGFfREsnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdWw4PCpmxnIGRhdG8nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnU3RhcnRkYXRvJywgJ1NsdXRkYXRvJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHNpZGUnLFxuICBqdW1wX3RvOiAnR8ODwqUgdGlsJyxcbiAganVtcF90b19jb25maXJtOiAnYmVrcsODwqZmdCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ0ZvcnJpZ2UgU2lkZScsXG4gIG5leHRfcGFnZTogJ07Dg8Kmc3RlIFNpZGUnLFxuICBwcmV2XzU6ICdGb3JyaWdlIDUgU2lkZXInLFxuICBuZXh0XzU6ICdOw4PCpnN0ZSA1IFNpZGVyJyxcbiAgcHJldl8zOiAnRm9ycmlnZSAzIFNpZGVyJyxcbiAgbmV4dF8zOiAnTsODwqZzdGUgMyBTaWRlcidcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvZGFfREsnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9kYV9ESyc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vZGFfREsnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9kYV9ESyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnZGEnLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgUGFnaW5hdGlvbixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRlcm1lbnUnLFxuICAgIGZpbHRlckNvbmZpcm06ICdPSycsXG4gICAgZmlsdGVyUmVzZXQ6ICdOdWxzdGlsJyxcbiAgICBzZWxlY3RBbGw6ICdWw4PCpmxnIGFsbGUnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydGVyIHZhbGcnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdBZmJyeWQnLFxuICAgIGp1c3RPa1RleHQ6ICdPSydcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQWZicnlkJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU8ODwrhnIGhlcicsXG4gICAgaXRlbVVuaXQ6ICdlbGVtZW50JyxcbiAgICBpdGVtc1VuaXQ6ICdlbGVtZW50ZXInXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ1VwbG9hZGVyLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnRmplcm4gZmlsJyxcbiAgICB1cGxvYWRFcnJvcjogJ0ZlamwgdmVkIHVwbG9hZCcsXG4gICAgcHJldmlld0ZpbGU6ICdGb3Jow4PCpW5kc3Zpc25pbmcnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdJbmdlbiBkYXRhJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdIZXV0ZScsXG4gIG5vdzogJ0pldHp0JyxcbiAgYmFja1RvVG9kYXk6ICdadXLDg8K8Y2sgenUgSGV1dGUnLFxuICBvazogJ09LJyxcbiAgY2xlYXI6ICdadXLDg8K8Y2tzZXR6ZW4nLFxuICBtb250aDogJ01vbmF0JyxcbiAgeWVhcjogJ0phaHInLFxuICB0aW1lU2VsZWN0OiAnWmVpdCB3w4PCpGhsZW4nLFxuICBkYXRlU2VsZWN0OiAnRGF0dW0gd8ODwqRobGVuJyxcbiAgbW9udGhTZWxlY3Q6ICdXw4PCpGhsZSBlaW5lbiBNb25hdCcsXG4gIHllYXJTZWxlY3Q6ICdXw4PCpGhsZSBlaW4gSmFocicsXG4gIGRlY2FkZVNlbGVjdDogJ1fDg8KkaGxlIGVpbiBKYWhyemVobnQnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdELk0uWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QuTS5ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnVm9yaGVyaWdlciBNb25hdCAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ07Dg8KkY2hzdGVyIE1vbmF0IChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdWb3JoZXJpZ2VzIEphaHIgKEN0cmwgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnTsODwqRjaHN0ZXMgSmFociAoQ3RybCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnVm9yaGVyaWdlcyBKYWhyemVobnQnLFxuICBuZXh0RGVjYWRlOiAnTsODwqRjaHN0ZXMgSmFocnplaG50JyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnVm9yaGVyaWdlcyBKYWhyaHVuZGVydCcsXG4gIG5leHRDZW50dXJ5OiAnTsODwqRjaHN0ZXMgSmFocmh1bmRlcnQnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdaZWl0IGF1c3fDg8KkaGxlbidcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvZGVfREUnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvZGVfREUnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdEYXR1bSBhdXN3w4PCpGhsZW4nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnU3RhcnRkYXR1bScsICdFbmRkYXR1bSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzQyNFxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gU2VpdGUnLFxuICBqdW1wX3RvOiAnR2VoZSB6dScsXG4gIGp1bXBfdG9fY29uZmlybTogJ2Jlc3TDg8KkdGlnZW4nLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdWb3JoZXJpZ2UgU2VpdGUnLFxuICBuZXh0X3BhZ2U6ICdOw4PCpGNoc3RlIFNlaXRlJyxcbiAgcHJldl81OiAnNSBTZWl0ZW4genVyw4PCvGNrJyxcbiAgbmV4dF81OiAnNSBTZWl0ZW4gdm9yJyxcbiAgcHJldl8zOiAnMyBTZWl0ZW4genVyw4PCvGNrJyxcbiAgbmV4dF8zOiAnMyBTZWl0ZW4gdm9yJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9kZV9ERSc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2RlX0RFJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9kZV9ERSc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2RlX0RFJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdkZScsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyLU1lbsODwrwnLFxuICAgIGZpbHRlckNvbmZpcm06ICdPSycsXG4gICAgZmlsdGVyUmVzZXQ6ICdadXLDg8K8Y2tzZXR6ZW4nLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVrdGllcmUgQWxsZScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnU2VsZWt0aW9uIEludmVydGllcmVuJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQWJicmVjaGVuJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0FiYnJlY2hlbidcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1N1Y2hlbicsXG4gICAgaXRlbVVuaXQ6ICdFaW50cmFnJyxcbiAgICBpdGVtc1VuaXQ6ICdFaW50csODwqRnZSdcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnSG9jaGxhZGVuLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnRGF0ZWkgZW50ZmVybmVuJyxcbiAgICB1cGxvYWRFcnJvcjogJ0ZlaGxlciBiZWltIEhvY2hsYWRlbicsXG4gICAgcHJldmlld0ZpbGU6ICdEYXRlaXZvcnNjaGF1J1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnS2VpbmUgRGF0ZW4nXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ8OOwqPDjsKuw47CvMOOwrXDj8KBw47CsScsXG4gIG5vdzogJ8OOwqTDj8KOw4/CgcOOwrEnLFxuICBiYWNrVG9Ub2RheTogJ8OOwqDDjsKvw4/Cg8OPwokgw4/Cg8OPwoTDjsK3IMOPwoPDjsK3w47CvMOOwrXDj8KBw47CucOOwr3DjsKuIMOOwrzDjsKtw4/CgcOOwrEnLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICfDjsKaw47CscOOwrjDjsKxw4/CgcOOwrnDj8KDw47CvMOPwozDj8KCJyxcbiAgbW9udGg6ICfDjsKcw47CrsOOwr3DjsKxw4/CgicsXG4gIHllYXI6ICfDjsKIw4/ChMOOwr/Dj8KCJyxcbiAgdGltZVNlbGVjdDogJ8OOwpXDj8KAw47CucOOwrvDjsK/w47Cs8OOwq4gw4/CjsOPwoHDjsKxw4/CgicsXG4gIGRhdGVTZWxlY3Q6ICfDjsKVw4/CgMOOwrnDjsK7w47Cv8OOwrPDjsKuIMOOwrfDjsK8w47CtcOPwoHDjsK/w47CvMOOwrfDjsK9w47Cr8OOwrHDj8KCJyxcbiAgbW9udGhTZWxlY3Q6ICfDjsKVw4/CgMOOwrnDjsK7w47Cv8OOwrPDjsKuIMOOwrzDjsKuw47CvcOOwrEnLFxuICB5ZWFyU2VsZWN0OiAnw47ClcOPwoDDjsK5w47Cu8OOwr/DjsKzw47CriDDjsKtw4/ChMOOwr/Dj8KFw4/CgicsXG4gIGRlY2FkZVNlbGVjdDogJ8OOwpXDj8KAw47CucOOwrvDjsK/w47Cs8OOwq4gw47CtMOOwrXDjsK6w47CscOOwrXDj8KEw47Cr8OOwrHDj8KCJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC9NL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdEL00vWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ8OOwqDDj8KBw47Cv8OOwrfDjsKzw47Cv8OPwo3DjsK8w47CtcOOwr3DjsK/w4/CgiDDjsK8w47CrsOOwr3DjsKxw4/CgiAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ8OOwpXDj8KAw4/CjMOOwrzDjsK1w47CvcOOwr/Dj8KCIMOOwrzDjsKuw47CvcOOwrHDj8KCIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICfDjsKgw4/CgcOOwr/DjsK3w47Cs8OOwr/Dj8KNw47CvMOOwrXDjsK9w47CvyDDjsKtw4/ChMOOwr/Dj8KCIChDb250cm9sICsgw47CscOPwoHDjsK5w4/Cg8OPwoTDjsK1w4/CgcOOwqwpJyxcbiAgbmV4dFllYXI6ICfDjsKVw4/CgMOPwozDjsK8w47CtcOOwr3DjsK/IMOOwq3Dj8KEw47Cv8OPwoIgKENvbnRyb2wgKyDDjsK0w47CtcOOwr7DjsK5w47CrCknLFxuICBwcmV2aW91c0RlY2FkZTogJ8OOwqDDj8KBw47Cv8OOwrfDjsKzw47Cv8OPwo3DjsK8w47CtcOOwr3DjsK3IMOOwrTDjsK1w47CusOOwrHDjsK1w4/ChMOOwq/DjsKxJyxcbiAgbmV4dERlY2FkZTogJ8OOwpXDj8KAw4/CjMOOwrzDjsK1w47CvcOOwrcgw47CtMOOwrXDjsK6w47CscOOwrXDj8KEw47Cr8OOwrEnLFxuICBwcmV2aW91c0NlbnR1cnk6ICfDjsKgw4/CgcOOwr/DjsK3w47Cs8OOwr/Dj8KNw47CvMOOwrXDjsK9w47Cv8OPwoIgw47CscOOwrnDj8KOw47CvcOOwrHDj8KCJyxcbiAgbmV4dENlbnR1cnk6ICfDjsKVw4/CgMOPwozDjsK8w47CtcOOwr3DjsK/w4/CgiDDjsKxw47CucOPwo7DjsK9w47CscOPwoInXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICfDjsKVw4/CgMOOwrnDjsK7w47CrcOOwr7Dj8KEw47CtSDDj8KOw4/CgcOOwrEnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL2VsX0dSJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL2VsX0dSJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnw47ClcOPwoDDjsK5w47Cu8OOwq3DjsK+w4/ChMOOwrUgw47Ct8OOwrzDjsK1w4/CgcOOwr/DjsK8w47Ct8OOwr3DjsKvw47CsScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWyfDjsKRw4/CgcOPwofDjsK5w47CusOOwq4gw47Ct8OOwrzDjsK1w4/CgcOOwr/DjsK8w47Ct8OOwr3DjsKvw47CsScsICfDjsKkw47CtcOOwrvDjsK5w47CusOOwq4gw47Ct8OOwrzDjsK1w4/CgcOOwr/DjsK8w47Ct8OOwr3DjsKvw47CsSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzQyNFxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gw4/Cg8OOwrXDjsK7w47Cr8OOwrTDjsKxJyxcbiAganVtcF90bzogJ8OOwpzDjsK1w4/ChMOOwqzDjsKyw47CscOPwoPDjsK3JyxcbiAganVtcF90b19jb25maXJtOiAnw47CtcOPwoDDjsK5w47CssOOwrXDjsKyw47CscOOwrnDj8KOw47CvcOPwoknLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICfDjsKgw4/CgcOOwr/DjsK3w47Cs8OOwr/Dj8KNw47CvMOOwrXDjsK9w47CtyDDjsKjw47CtcOOwrvDjsKvw47CtMOOwrEnLFxuICBuZXh0X3BhZ2U6ICfDjsKVw4/CgMOPwozDjsK8w47CtcOOwr3DjsK3IMOOwqPDjsK1w47Cu8OOwq/DjsK0w47CsScsXG4gIHByZXZfNTogJ8OOwqDDj8KBw47Cv8OOwrfDjsKzw47Cv8OPwo3DjsK8w47CtcOOwr3DjsK1w4/CgiA1IMOOwqPDjsK1w47Cu8OOwq/DjsK0w47CtcOPwoInLFxuICBuZXh0XzU6ICfDjsKVw4/CgMOPwozDjsK8w47CtcOOwr3DjsK1w4/CgiA1IMOPwoPDjsK1w47Cu8OOwq/DjsK0w47CtcOPwoInLFxuICBwcmV2XzM6ICfDjsKgw4/CgcOOwr/DjsK3w47Cs8OOwr/Dj8KNw47CvMOOwrXDjsK9w47CtcOPwoIgMyDDjsKjw47CtcOOwrvDjsKvw47CtMOOwrXDj8KCJyxcbiAgbmV4dF8zOiAnw47ClcOPwoDDj8KMw47CvMOOwrXDjsK9w47CtcOPwoIgMyDDjsKjw47CtcOOwrvDjsKvw47CtMOOwrXDj8KCJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9lbF9HUic7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2VsX0dSJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9lbF9HUic7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2VsX0dSJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdlbCcsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnw47CnMOOwrXDjsK9w47Cv8OPwo0gw4/ChsOOwq/DjsK7w4/ChMOPwoHDj8KJw47CvScsXG4gICAgZmlsdGVyQ29uZmlybTogJ8OOwp/DjsKaJyxcbiAgICBmaWx0ZXJSZXNldDogJ8OOwpXDj8KAw47CscOOwr3DjsKxw4/ChsOOwr/Dj8KBw47CrCcsXG4gICAgc2VsZWN0QWxsOiAnw47ClcOPwoDDjsK5w47Cu8OOwr/DjsKzw47CriDDj8KEw4/CgcOOwq3Dj8KHw47Cv8OPwoXDj8KDw47CscOPwoIgw4/Cg8OOwrXDjsK7w47Cr8OOwrTDjsKxw4/CgicsXG4gICAgc2VsZWN0SW52ZXJ0OiAnw47CkcOOwr3Dj8KEw47CucOPwoPDj8KEw4/CgcOOwr/Dj8KGw47CriDDj8KEw4/CgcOOwq3Dj8KHw47Cv8OPwoXDj8KDw47CscOPwoIgw4/Cg8OOwrXDjsK7w47Cr8OOwrTDjsKxw4/CgidcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICfDjsKfw47CmicsXG4gICAgY2FuY2VsVGV4dDogJ8OOwobDjsK6w4/ChcOPwoHDjsK/JyxcbiAgICBqdXN0T2tUZXh0OiAnw47Cn8OOwponXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICfDjsKfw47CmicsXG4gICAgY2FuY2VsVGV4dDogJ8OOwobDjsK6w4/ChcOPwoHDjsK/J1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnw47CkcOOwr3DjsKxw47CtsOOwq7Dj8KEw47Ct8OPwoPDjsK3JyxcbiAgICBpdGVtVW5pdDogJ8OOwrHDjsK9w4/ChMOOwrnDjsK6w47CtcOOwq/DjsK8w47CtcOOwr3DjsK/JyxcbiAgICBpdGVtc1VuaXQ6ICfDjsKxw47CvcOPwoTDjsK5w47CusOOwrXDjsKvw47CvMOOwrXDjsK9w47CsSdcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnw47CnMOOwrXDj8KEw47CscOPwobDj8KMw4/CgcOPwoTDj8KJw4/Cg8OOwrcuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICfDjsKRw4/ChsOOwrHDjsKvw4/CgcOOwrXDj8KDw47CtyDDjsKxw4/CgcOPwofDjsK1w47Cr8OOwr/Dj8KFJyxcbiAgICB1cGxvYWRFcnJvcjogJ8OOwqPDj8KGw47CrMOOwrvDjsK8w47CsSDDjsK8w47CtcOPwoTDjsKxw4/ChsOPwozDj8KBw4/ChMOPwonDj8KDw47Ct8OPwoInLFxuICAgIHByZXZpZXdGaWxlOiAnw47CoMOPwoHDjsK/w47CtcOPwoDDjsK5w4/Cg8OOwrrDj8KMw4/CgMOOwrfDj8KDw47CtyDDjsKxw4/CgcOPwofDjsK1w47Cr8OOwr/Dj8KFJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnw47ClMOOwrXDjsK9IMOPwoXDj8KAw47CrMOPwoHDj8KHw47Cv8OPwoXDjsK9IMOOwrTDjsK1w47CtMOOwr/DjsK8w47CrcOOwr3DjsKxJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdUb2RheScsXG4gIG5vdzogJ05vdycsXG4gIGJhY2tUb1RvZGF5OiAnQmFjayB0byB0b2RheScsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ0NsZWFyJyxcbiAgbW9udGg6ICdNb250aCcsXG4gIHllYXI6ICdZZWFyJyxcbiAgdGltZVNlbGVjdDogJ1NlbGVjdCB0aW1lJyxcbiAgZGF0ZVNlbGVjdDogJ1NlbGVjdCBkYXRlJyxcbiAgbW9udGhTZWxlY3Q6ICdDaG9vc2UgYSBtb250aCcsXG4gIHllYXJTZWxlY3Q6ICdDaG9vc2UgYSB5ZWFyJyxcbiAgZGVjYWRlU2VsZWN0OiAnQ2hvb3NlIGEgZGVjYWRlJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC9NL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdEL00vWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ1ByZXZpb3VzIG1vbnRoIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTmV4dCBtb250aCAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnTGFzdCB5ZWFyIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ05leHQgeWVhciAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnTGFzdCBkZWNhZGUnLFxuICBuZXh0RGVjYWRlOiAnTmV4dCBkZWNhZGUnLFxuICBwcmV2aW91c0NlbnR1cnk6ICdMYXN0IGNlbnR1cnknLFxuICBuZXh0Q2VudHVyeTogJ05leHQgY2VudHVyeSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1NlbGVjdCB0aW1lJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9lbl9HQic7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9lbl9HQic7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBkYXRlJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gcGFnZScsXG4gIGp1bXBfdG86ICdHb3RvJyxcbiAganVtcF90b19jb25maXJtOiAnY29uZmlybScsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1ByZXZpb3VzIFBhZ2UnLFxuICBuZXh0X3BhZ2U6ICdOZXh0IFBhZ2UnLFxuICBwcmV2XzU6ICdQcmV2aW91cyA1IFBhZ2VzJyxcbiAgbmV4dF81OiAnTmV4dCA1IFBhZ2VzJyxcbiAgcHJldl8zOiAnUHJldmlvdXMgMyBQYWdlcycsXG4gIG5leHRfMzogJ05leHQgMyBQYWdlcydcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvZW5fR0InO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9lbl9HQic7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vZW5fR0InO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9lbl9HQic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnZW4tZ2InLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRlciBtZW51JyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzZXQnLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjdCBjdXJyZW50IHBhZ2UnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydCBjdXJyZW50IHBhZ2UnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxuICAgIGp1c3RPa1RleHQ6ICdPSydcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIGhlcmUnLFxuICAgIGl0ZW1Vbml0OiAnaXRlbScsXG4gICAgaXRlbXNVbml0OiAnaXRlbXMnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ1VwbG9hZGluZy4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ1JlbW92ZSBmaWxlJyxcbiAgICB1cGxvYWRFcnJvcjogJ1VwbG9hZCBlcnJvcicsXG4gICAgcHJldmlld0ZpbGU6ICdQcmV2aWV3IGZpbGUnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdObyBkYXRhJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdUb2RheScsXG4gIG5vdzogJ05vdycsXG4gIGJhY2tUb1RvZGF5OiAnQmFjayB0byB0b2RheScsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ0NsZWFyJyxcbiAgbW9udGg6ICdNb250aCcsXG4gIHllYXI6ICdZZWFyJyxcbiAgdGltZVNlbGVjdDogJ1NlbGVjdCB0aW1lJyxcbiAgZGF0ZVNlbGVjdDogJ1NlbGVjdCBkYXRlJyxcbiAgbW9udGhTZWxlY3Q6ICdDaG9vc2UgYSBtb250aCcsXG4gIHllYXJTZWxlY3Q6ICdDaG9vc2UgYSB5ZWFyJyxcbiAgZGVjYWRlU2VsZWN0OiAnQ2hvb3NlIGEgZGVjYWRlJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnTS9EL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdNL0QvWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ1ByZXZpb3VzIG1vbnRoIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTmV4dCBtb250aCAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnTGFzdCB5ZWFyIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ05leHQgeWVhciAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnTGFzdCBkZWNhZGUnLFxuICBuZXh0RGVjYWRlOiAnTmV4dCBkZWNhZGUnLFxuICBwcmV2aW91c0NlbnR1cnk6ICdMYXN0IGNlbnR1cnknLFxuICBuZXh0Q2VudHVyeTogJ05leHQgY2VudHVyeSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1NlbGVjdCB0aW1lJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9lbl9VUyc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9lbl9VUyc7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBkYXRlJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gcGFnZScsXG4gIGp1bXBfdG86ICdHb3RvJyxcbiAganVtcF90b19jb25maXJtOiAnY29uZmlybScsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1ByZXZpb3VzIFBhZ2UnLFxuICBuZXh0X3BhZ2U6ICdOZXh0IFBhZ2UnLFxuICBwcmV2XzU6ICdQcmV2aW91cyA1IFBhZ2VzJyxcbiAgbmV4dF81OiAnTmV4dCA1IFBhZ2VzJyxcbiAgcHJldl8zOiAnUHJldmlvdXMgMyBQYWdlcycsXG4gIG5leHRfMzogJ05leHQgMyBQYWdlcydcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvZW5fVVMnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9lbl9VUyc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vZW5fVVMnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9lbl9VUyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnZW4nLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgZ2xvYmFsOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdQbGVhc2Ugc2VsZWN0J1xuICB9LFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyIG1lbnUnLFxuICAgIGZpbHRlckNvbmZpcm06ICdPSycsXG4gICAgZmlsdGVyUmVzZXQ6ICdSZXNldCcsXG4gICAgc2VsZWN0QWxsOiAnU2VsZWN0IGN1cnJlbnQgcGFnZScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnSW52ZXJ0IGN1cnJlbnQgcGFnZScsXG4gICAgc29ydFRpdGxlOiAnU29ydCdcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0NhbmNlbCcsXG4gICAganVzdE9rVGV4dDogJ09LJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgdGl0bGVzOiBbJycsICcnXSxcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBoZXJlJyxcbiAgICBpdGVtVW5pdDogJ2l0ZW0nLFxuICAgIGl0ZW1zVW5pdDogJ2l0ZW1zJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdVcGxvYWRpbmcuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdSZW1vdmUgZmlsZScsXG4gICAgdXBsb2FkRXJyb3I6ICdVcGxvYWQgZXJyb3InLFxuICAgIHByZXZpZXdGaWxlOiAnUHJldmlldyBmaWxlJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnTm8gRGF0YSdcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnSG95JyxcbiAgbm93OiAnQWhvcmEnLFxuICBiYWNrVG9Ub2RheTogJ1ZvbHZlciBhIGhveScsXG4gIG9rOiAnQWNlcHRhcicsXG4gIGNsZWFyOiAnTGltcGlhcicsXG4gIG1vbnRoOiAnTWVzJyxcbiAgeWVhcjogJ0HDg8KxbycsXG4gIHRpbWVTZWxlY3Q6ICdTZWxlY2Npb25hciBob3JhJyxcbiAgZGF0ZVNlbGVjdDogJ1NlbGVjY2lvbmFyIGZlY2hhJyxcbiAgbW9udGhTZWxlY3Q6ICdFbGVnaXIgdW4gbWVzJyxcbiAgeWVhclNlbGVjdDogJ0VsZWdpciB1biBhw4PCsW8nLFxuICBkZWNhZGVTZWxlY3Q6ICdFbGVnaXIgdW5hIGTDg8KpY2FkYScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0QvTS9ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnRC9NL1lZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdNZXMgYW50ZXJpb3IgKFBhZ2VVcCknLFxuICBuZXh0TW9udGg6ICdNZXMgc2lndWllbnRlIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdBw4PCsW8gYW50ZXJpb3IgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnQcODwrFvIHNpZ3VpZW50ZSAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnRMODwqljYWRhIGFudGVyaW9yJyxcbiAgbmV4dERlY2FkZTogJ0TDg8KpY2FkYSBzaWd1aWVudGUnLFxuICBwcmV2aW91c0NlbnR1cnk6ICdTaWdsbyBhbnRlcmlvcicsXG4gIG5leHRDZW50dXJ5OiAnU2lnbG8gc2lndWllbnRlJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnU2VsZWNjaW9uYXIgaG9yYSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvZXNfRVMnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvZXNfRVMnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdTZWxlY2Npb25hciBmZWNoYScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydGZWNoYSBpbmljaWFsJywgJ0ZlY2hhIGZpbmFsJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHDDg8KhZ2luYScsXG4gIGp1bXBfdG86ICdJciBhJyxcbiAganVtcF90b19jb25maXJtOiAnY29uZmlybWFyJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUMODwqFnaW5hIGFudGVyaW9yJyxcbiAgbmV4dF9wYWdlOiAnUMODwqFnaW5hIHNpZ3VpZW50ZScsXG4gIHByZXZfNTogJzUgcMODwqFnaW5hcyBwcmV2aWFzJyxcbiAgbmV4dF81OiAnNSBww4PCoWdpbmFzIHNpZ3VpZW50ZXMnLFxuICBwcmV2XzM6ICczIHDDg8KhZ2luYXMgcHJldmlhcycsXG4gIG5leHRfMzogJzMgcMODwqFnaW5hcyBzaWd1aWVudGVzJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9lc19FUyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2VzX0VTJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9lc19FUyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2VzX0VTJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdlcycsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdHJhciBtZW7Dg8K6JyxcbiAgICBmaWx0ZXJDb25maXJtOiAnQWNlcHRhcicsXG4gICAgZmlsdGVyUmVzZXQ6ICdSZWluaWNpYXInLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjY2lvbmFyIHRvZG8nLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydGlyIHNlbGVjY2nDg8KzbidcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdBY2VwdGFyJyxcbiAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsYXInLFxuICAgIGp1c3RPa1RleHQ6ICdBY2VwdGFyJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnQWNlcHRhcicsXG4gICAgY2FuY2VsVGV4dDogJ0NhbmNlbGFyJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQnVzY2FyIGFxdcODwq0nLFxuICAgIGl0ZW1Vbml0OiAnZWxlbWVudG8nLFxuICAgIGl0ZW1zVW5pdDogJ2VsZW1lbnRvcydcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnU3ViaWVuZG8uLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdFbGltaW5hciBhcmNoaXZvJyxcbiAgICB1cGxvYWRFcnJvcjogJ0Vycm9yIGFsIHN1YmlyIGVsIGFyY2hpdm8nLFxuICAgIHByZXZpZXdGaWxlOiAnVmlzdGEgcHJldmlhJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnTm8gaGF5IGRhdG9zJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdUw4PCpG5hJyxcbiAgbm93OiAnUHJhZWd1JyxcbiAgYmFja1RvVG9kYXk6ICdUYWdhc2kgdMODwqRuYXNlIGp1dXJkZScsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ1TDg8K8aGlzdGEnLFxuICBtb250aDogJ0t1dScsXG4gIHllYXI6ICdBYXN0YScsXG4gIHRpbWVTZWxlY3Q6ICdWYWxpIGFlZycsXG4gIGRhdGVTZWxlY3Q6ICdWYWxpIGt1dXDDg8KkZXYnLFxuICBtb250aFNlbGVjdDogJ1ZhbGkga3V1JyxcbiAgeWVhclNlbGVjdDogJ1ZhbGkgYWFzdGEnLFxuICBkZWNhZGVTZWxlY3Q6ICdWYWxpIGRla2FhZCcsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0QuTS5ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnRC5NLllZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdFZWxtaW5lIGt1dSAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ0rDg8KkcmdtaW5lIGt1dSAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnRWVsbWluZSBhYXN0YSAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICdKw4PCpHJnbWluZSBhYXN0YSAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnRWVsbWluZSBkZWthYWQnLFxuICBuZXh0RGVjYWRlOiAnSsODwqRyZ21pbmUgZGVrYWFkJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnRWVsbWluZSBzYWphbmQnLFxuICBuZXh0Q2VudHVyeTogJ0rDg8KkcmdtaW5lIHNhamFuZCdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1ZhbGkgYWVnJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9ldF9FRSc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9ldF9FRSc7XG5cbi8vIMOnwrvCn8OkwrjCgMOlwpDCiMOlwrnCtsOkwrjCusOlwq7CjMOmwpXCtMOnwprChCBMb2NhbGVcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnVmFsaSBrdXVww4PCpGV2JyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ0FsZ3VzIGt1dXDDg8KkZXYnLCAnTMODwrVwdSBrdXVww4PCpGV2J10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIGxlaGVrw4PCvGxqZWwnLFxuICBqdW1wX3RvOiAnSMODwrxwcGEnLFxuICBqdW1wX3RvX2NvbmZpcm06ICdLaW5uaXRhZ2UnLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdFZWxtaW5lIGxlaHQnLFxuICBuZXh0X3BhZ2U6ICdKw4PCpHJnbWluZSBsZWh0JyxcbiAgcHJldl81OiAnRWVsbWlzZWQgNSBsZWhla8ODwrxsZ2UnLFxuICBuZXh0XzU6ICdKw4PCpHJnbWlzZWQgNSBsZWhla8ODwrxsZ2UnLFxuICBwcmV2XzM6ICdFZWxtaXNlZCAzIGxlaGVrw4PCvGxnZScsXG4gIG5leHRfMzogJ0rDg8KkcmdtaXNlZCAzIGxlaGVrw4PCvGxnZSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvZXRfRUUnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9ldF9FRSc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vZXRfRUUnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9ldF9FRSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnZXQnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRyaSBtZW7Dg8K8w4PCvCcsXG4gICAgZmlsdGVyQ29uZmlybTogJ09LJyxcbiAgICBmaWx0ZXJSZXNldDogJ051bGxpJyxcbiAgICBzZWxlY3RBbGw6ICdWYWxpIGvDg8K1aWsnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydGVlcmkgdmFsaWsnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdUw4PCvGhpc3RhJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ1TDg8K8aGlzdGEnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdPdHNpIHNpaXQnLFxuICAgIGl0ZW1Vbml0OiAna29ndXMnLFxuICAgIGl0ZW1zVW5pdDogJ2tvZ3VzJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDg8KcbGVzbGFhZGltaW5lLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnRWVtYWxkYSBmYWlsJyxcbiAgICB1cGxvYWRFcnJvcjogJ8ODwpxsZXNsYWFkaW1pc2UgdMODwrVyZ2UnLFxuICAgIHByZXZpZXdGaWxlOiAnRmFpbGkgZWVsdmFhZGUnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdBbmRtZWQgcHV1ZHV2YWQnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ8OYwqfDmcKFw5jCscOZwojDmMKyJyxcbiAgbm93OiAnw5jCp8OawqnDmcKGw5nCiMOZwoYnLFxuICBiYWNrVG9Ub2RheTogJ8OYwqjDmMKnw5jCssOawq/DmMK0w5jCqiDDmMKow5nChyDDmMKxw5nCiMOYwrInLFxuICBvazogJ8OYwqjDmMKnw5jCtMOZwocnLFxuICBjbGVhcjogJ8OZwr7DmMKnw5rCqSDDmsKpw5jCscOYwq/DmcKGJyxcbiAgbW9udGg6ICfDmcKFw5jCp8OZwocnLFxuICB5ZWFyOiAnw5jCs8OYwqfDmcKEJyxcbiAgdGltZVNlbGVjdDogJ8OYwqfDmcKGw5jCqsOYwq7DmMKnw5jCqCDDmMKyw5nChcOYwqfDmcKGJyxcbiAgZGF0ZVNlbGVjdDogJ8OYwqfDmcKGw5jCqsOYwq7DmMKnw5jCqCDDmMKqw5jCp8OYwrHDm8KMw5jCricsXG4gIG1vbnRoU2VsZWN0OiAnw5vCjMOawqkgw5nChcOYwqfDmcKHIMOYwrHDmMKnIMOYwqfDmcKGw5jCqsOYwq7DmMKnw5jCqCDDmsKpw5nChsObwozDmMKvJyxcbiAgeWVhclNlbGVjdDogJ8ObwozDmsKpIMOYwrPDmMKnw5nChCDDmMKxw5jCpyDDmMKnw5nChsOYwqrDmMKuw5jCp8OYwqggw5rCqcOZwobDm8KMw5jCrycsXG4gIGRlY2FkZVNlbGVjdDogJ8ObwozDmsKpIMOYwq/DmcKHw5nChyDDmMKxw5jCpyDDmMKnw5nChsOYwqrDmMKuw5jCp8OYwqggw5rCqcOZwobDm8KMw5jCrycsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ00vRC9ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnTS9EL1lZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICfDmcKFw5jCp8OZwocgw5nCgsOYwqjDmcKEIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnw5nChcOYwqfDmcKHIMOYwqjDmMK5w5jCryAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnw5jCs8OYwqfDmcKEIMOZwoLDmMKow5nChCAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICfDmMKzw5jCp8OZwoQgw5jCqMOYwrnDmMKvIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICfDmMKvw5nCh8OZwocgw5nCgsOYwqjDmcKEJyxcbiAgbmV4dERlY2FkZTogJ8OYwq/DmcKHw5nChyDDmMKow5jCucOYwq8nLFxuICBwcmV2aW91c0NlbnR1cnk6ICfDmcKCw5jCscOZwoYgw5nCgsOYwqjDmcKEJyxcbiAgbmV4dENlbnR1cnk6ICfDmcKCw5jCscOZwoYgw5jCqMOYwrnDmMKvJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnw5jCp8OZwobDmMKqw5jCrsOYwqfDmMKoIMOYwrLDmcKFw5jCp8OZwoYnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL2ZhX0lSJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL2ZhX0lSJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnw5jCp8OZwobDmMKqw5jCrsOYwqfDmMKoIMOYwqrDmMKnw5jCscObwozDmMKuJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ8OYwqrDmMKnw5jCscObwozDmMKuIMOYwrTDmMKxw5nCiMOYwrknLCAnw5jCqsOYwqfDmMKxw5vCjMOYwq4gw5nCvsOYwqfDm8KMw5jCp8OZwoYnXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gw5jCtcOZwoHDmMKtw5nChycsXG4gIGp1bXBfdG86ICfDmMKow5jCscOZwoggw5jCqMOZwocnLFxuICBqdW1wX3RvX2NvbmZpcm06ICfDmMKqw5jCp8ObwozDm8KMw5jCrycsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ8OYwrXDmcKBw5jCrcOZwocgw5nCgsOYwqjDmcKEw5vCjCcsXG4gIG5leHRfcGFnZTogJ8OYwrXDmcKBw5jCrcOZwocgw5jCqMOYwrnDmMKvw5vCjCcsXG4gIHByZXZfNTogJ8ObwrUgw5jCtcOZwoHDmMKtw5nChyDDmcKCw5jCqMOZwoTDm8KMJyxcbiAgbmV4dF81OiAnw5vCtSDDmMK1w5nCgcOYwq3DmcKHIMOYwqjDmMK5w5jCr8ObwownLFxuICBwcmV2XzM6ICfDm8KzIMOYwrXDmcKBw5jCrcOZwocgw5nCgsOYwqjDmcKEw5vCjCcsXG4gIG5leHRfMzogJ8ObwrMgw5jCtcOZwoHDmMKtw5nChyDDmMKow5jCucOYwq/Dm8KMJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9mYV9JUic7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2ZhX0lSJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9mYV9JUic7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2ZhX0lSJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdmYScsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnw5nChcOZwobDmcKIw5vCjCDDmcKBw5vCjMOZwoTDmMKqw5jCsScsXG4gICAgZmlsdGVyQ29uZmlybTogJ8OYwqrDmMKnw5vCjMObwozDmMKvJyxcbiAgICBmaWx0ZXJSZXNldDogJ8OZwr7DmMKnw5rCqSDDmsKpw5jCscOYwq/DmcKGJyxcbiAgICBzZWxlY3RBbGw6ICfDmMKnw5nChsOYwqrDmMKuw5jCp8OYwqggw5jCtcOZwoHDmMKtw5nCh8OiwoDCjMObwowgw5rCqcOZwobDmcKIw5nChsObwownLFxuICAgIHNlbGVjdEludmVydDogJ8OZwoXDmMK5w5rCqcOZwojDmMKzIMOawqnDmMKxw5jCr8OZwoYgw5jCp8OZwobDmMKqw5jCrsOYwqfDmMKow6LCgMKMw5nCh8OYwqcgw5jCr8OYwrEgw5jCtcOZwoHDmMKtw5nChyDDm8KMIMOawqnDmcKGw5nCiMOZwobDm8KMJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ8OYwqrDmMKnw5vCjMObwozDmMKvJyxcbiAgICBjYW5jZWxUZXh0OiAnw5nChMOYwrrDmcKIJyxcbiAgICBqdXN0T2tUZXh0OiAnw5jCqsOYwqfDm8KMw5vCjMOYwq8nXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICfDmMKqw5jCp8ObwozDm8KMw5jCrycsXG4gICAgY2FuY2VsVGV4dDogJ8OZwoTDmMK6w5nCiCdcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ8OYwqzDmMKzw5jCqsOYwqzDmcKIJyxcbiAgICBpdGVtVW5pdDogJycsXG4gICAgaXRlbXNVbml0OiAnJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDmMKvw5jCsSDDmMKtw5jCp8OZwoQgw5jCosOZwr7DmcKEw5nCiMOYwq8uLi4nLFxuICAgIHJlbW92ZUZpbGU6ICfDmMKtw5jCsMOZwoEgw5nCgcOYwqfDm8KMw5nChCcsXG4gICAgdXBsb2FkRXJyb3I6ICfDmMKuw5jCt8OYwqcgw5jCr8OYwrEgw5jCosOZwr7DmcKEw5nCiMOYwq8nLFxuICAgIHByZXZpZXdGaWxlOiAnw5nChcOYwrTDmMKnw5nCh8OYwq/DmcKHw6LCgMKMw5vCjCDDmcKBw5jCp8ObwozDmcKEJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnw5jCr8OYwqfDmMKvw5nCh8OiwoDCjMOYwqfDm8KMIMOZwoXDmcKIw5jCrMOZwojDmMKvIMOZwobDm8KMw5jCs8OYwqonXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ1TDg8KkbsODwqTDg8KkbicsXG4gIG5vdzogJ055dCcsXG4gIGJhY2tUb1RvZGF5OiAnVMODwqRtw4PCpCBww4PCpGl2w4PCpCcsXG4gIG9rOiAnT2snLFxuICBjbGVhcjogJ1R5aGplbm7Dg8KkJyxcbiAgbW9udGg6ICdLdXVrYXVzaScsXG4gIHllYXI6ICdWdW9zaScsXG4gIHRpbWVTZWxlY3Q6ICdWYWxpc2UgYWlrYScsXG4gIGRhdGVTZWxlY3Q6ICdWYWxpdHNlIHDDg8KkaXbDg8KkJyxcbiAgbW9udGhTZWxlY3Q6ICdWYWxpdHNlIGt1dWthdXNpJyxcbiAgeWVhclNlbGVjdDogJ1ZhbGl0c2UgdnVvc2knLFxuICBkZWNhZGVTZWxlY3Q6ICdWYWxpdHNlIHZ1b3Npa3ltbWVuJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC5NLllZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdELk0uWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ0VkZWxsaW5lbiBrdXVrYXVzaSAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ1NldXJhYXZhIGt1dWthdXNpIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdFZGVsbGluZW4gdnVvc2kgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnU2V1cmFhdmEgdnVvc2kgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ0VkZWxsaW5lbiB2dW9zaWt5bW1lbicsXG4gIG5leHREZWNhZGU6ICdTZXVyYWF2YSB2dW9zaWt5bW1lbicsXG4gIHByZXZpb3VzQ2VudHVyeTogJ0VkZWxsaW5lbiB2dW9zaXNhdGEnLFxuICBuZXh0Q2VudHVyeTogJ1NldXJhYXZhIHZ1b3Npc2F0YSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1ZhbGl0c2UgYWlrYSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvZmlfRkknO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvZmlfRkknO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdWYWxpdHNlIHDDg8KkaXbDg8KkJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ0Fsa3UgcMODwqRpdsODwqQnLCAnTG9wcHUgcMODwqRpdsODwqQnXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gc2l2dScsXG4gIGp1bXBfdG86ICdNZW5lJyxcbiAganVtcF90b19jb25maXJtOiAnUG90dnJkaXRlJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnRWRlbGxpbmVuIHNpdnUnLFxuICBuZXh0X3BhZ2U6ICdTZXVyYWF2YSBzaXZ1JyxcbiAgcHJldl81OiAnRWRlbGxpc2V0IDUgc2l2dWEnLFxuICBuZXh0XzU6ICdTZXVyYWF2YXQgNSBzaXZ1YScsXG4gIHByZXZfMzogJ0VkZWxsaXNldCAzIHNpdnVhJyxcbiAgbmV4dF8zOiAnU2V1cmFhdmF0IDMgc2l2dWEnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL2ZpX0ZJJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvZmlfRkknO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL2ZpX0ZJJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvZmlfRkknO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2ZpJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICdTdW9kYXR1cyB2YWxpa2tvJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnVHloamVubsODwqQnLFxuICAgIHNlbGVjdEFsbDogJ1ZhbGl0c2Uga2Fpa2tpJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICdWYWxpdHNlIHDDg8KkaW52YXN0b2luJyxcbiAgICBzb3J0VGl0bGU6ICdMYWppdHRlbGUnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdQZXJ1dXRhJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ1BlcnV1dGEnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdFdHNpIHTDg8Kkw4PCpGx0w4PCpCcsXG4gICAgaXRlbVVuaXQ6ICdrb2hkZScsXG4gICAgaXRlbXNVbml0OiAna29oZGV0dGEnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ0zDg8KkaGV0ZXTDg8Kkw4PCpG4uLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdQb2lzdGEgdGllZG9zdG8nLFxuICAgIHVwbG9hZEVycm9yOiAnVmlyaGUgbMODwqRoZXR5a3Nlc3PDg8KkJyxcbiAgICBwcmV2aWV3RmlsZTogJ0VzaWthdHNlbGUgdGllZG9zdG9hJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnRWkga29odGVpdGEnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ0F1am91cmRcXCdodWknLFxuICBub3c6ICdNYWludGVuYW50JyxcbiAgYmFja1RvVG9kYXk6ICdBdWpvdXJkXFwnaHVpJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnUsODwql0YWJsaXInLFxuICBtb250aDogJ01vaXMnLFxuICB5ZWFyOiAnQW5uw4PCqWUnLFxuICB0aW1lU2VsZWN0OiAnU8ODwqlsZWN0aW9ubmVyIGxcXCdoZXVyZScsXG4gIGRhdGVTZWxlY3Q6ICdTw4PCqWxlY3Rpb25uZXIgbFxcJ2hldXJlJyxcbiAgbW9udGhTZWxlY3Q6ICdDaG9pc2lzc2V6IHVuIG1vaXMnLFxuICB5ZWFyU2VsZWN0OiAnQ2hvaXNpc3NleiB1bmUgYW5uw4PCqWUnLFxuICBkZWNhZGVTZWxlY3Q6ICdDaG9pc2lzc2V6IHVuZSBkw4PCqWNlbm5pZScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0QvTS9ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnRC9NL1lZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdNb2lzIHByw4PCqWPDg8KpZGVudCAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ01vaXMgc3VpdmFudCAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnQW5uw4PCqWUgcHLDg8KpY8ODwqlkZW50ZSAoQ3RybCArIGdhdWNoZSknLFxuICBuZXh0WWVhcjogJ0FubsODwqllIHByb2NoYWluZSAoQ3RybCArIGRyb2l0ZSknLFxuICBwcmV2aW91c0RlY2FkZTogJ0TDg8KpY2VubmllIHByw4PCqWPDg8KpZGVudGUnLFxuICBuZXh0RGVjYWRlOiAnRMODwqljZW5uaWUgc3VpdmFudGUnLFxuICBwcmV2aW91c0NlbnR1cnk6ICdTacODwqhjbGUgcHLDg8KpY8ODwqlkZW50JyxcbiAgbmV4dENlbnR1cnk6ICdTacODwqhjbGUgc3VpdmFudCdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1PDg8KpbGVjdGlvbm5lciBsXFwnaGV1cmUnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL2ZyX0JFJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL2ZyX0JFJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnU8ODwqlsZWN0aW9ubmVyIHVuZSBkYXRlJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ0RhdGUgZGUgZMODwqlidXQnLCAnRGF0ZSBkZSBmaW4nXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy80MjRcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHBhZ2UnLFxuICBqdW1wX3RvOiAnQWxsZXIgw4PCoCcsXG4gIGp1bXBfdG9fY29uZmlybTogJ2NvbmZpcm1lcicsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1BhZ2UgcHLDg8KpY8ODwqlkZW50ZScsXG4gIG5leHRfcGFnZTogJ1BhZ2Ugc3VpdmFudGUnLFxuICBwcmV2XzU6ICc1IFBhZ2VzIHByw4PCqWPDg8KpZGVudGVzJyxcbiAgbmV4dF81OiAnNSBQYWdlcyBzdWl2YW50ZXMnLFxuICBwcmV2XzM6ICczIFBhZ2VzIHByw4PCqWPDg8KpZGVudGVzJyxcbiAgbmV4dF8zOiAnMyBQYWdlcyBzdWl2YW50ZXMnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL2ZyX0JFJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvZnJfQkUnO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL2ZyX0JFJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvZnJfQkUnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2ZyJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICdGaWx0cmVyJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUsODwqlpbml0aWFsaXNlcidcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0FubnVsZXInLFxuICAgIGp1c3RPa1RleHQ6ICdPSydcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQW5udWxlcidcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1JlY2hlcmNoZScsXG4gICAgaXRlbVVuaXQ6ICfDg8KpbMODwqltZW50JyxcbiAgICBpdGVtc1VuaXQ6ICfDg8KpbMODwqltZW50cydcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0F1Y3VuZSBkb25uw4PCqWUnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ0F1am91cmRcXCdodWknLFxuICBub3c6ICdNYWludGVuYW50JyxcbiAgYmFja1RvVG9kYXk6ICdBdWpvdXJkXFwnaHVpJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnUsODwql0YWJsaXInLFxuICBtb250aDogJ01vaXMnLFxuICB5ZWFyOiAnQW5uw4PCqWUnLFxuICB0aW1lU2VsZWN0OiAnU8ODwqlsZWN0aW9ubmVyIGxcXCdoZXVyZScsXG4gIGRhdGVTZWxlY3Q6ICdTw4PCqWxlY3Rpb25uZXIgbFxcJ2hldXJlJyxcbiAgbW9udGhTZWxlY3Q6ICdDaG9pc2lzc2V6IHVuIG1vaXMnLFxuICB5ZWFyU2VsZWN0OiAnQ2hvaXNpc3NleiB1bmUgYW5uw4PCqWUnLFxuICBkZWNhZGVTZWxlY3Q6ICdDaG9pc2lzc2V6IHVuZSBkw4PCqWNlbm5pZScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0REL01NL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdERCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnREQvTU0vWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ01vaXMgcHLDg8KpY8ODwqlkZW50IChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTW9pcyBzdWl2YW50IChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdBbm7Dg8KpZSBwcsODwqljw4PCqWRlbnRlIChDdHJsICsgZ2F1Y2hlKScsXG4gIG5leHRZZWFyOiAnQW5uw4PCqWUgcHJvY2hhaW5lIChDdHJsICsgZHJvaXRlKScsXG4gIHByZXZpb3VzRGVjYWRlOiAnRMODwqljZW5uaWUgcHLDg8KpY8ODwqlkZW50ZScsXG4gIG5leHREZWNhZGU6ICdEw4PCqWNlbm5pZSBzdWl2YW50ZScsXG4gIHByZXZpb3VzQ2VudHVyeTogJ1Npw4PCqGNsZSBwcsODwqljw4PCqWRlbnQnLFxuICBuZXh0Q2VudHVyeTogJ1Npw4PCqGNsZSBzdWl2YW50J1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnU8ODwqlsZWN0aW9ubmVyIGxcXCdoZXVyZSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvZnJfRlInO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvZnJfRlInO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdTw4PCqWxlY3Rpb25uZXIgdW5lIGRhdGUnLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnRGF0ZSBkZSBkw4PCqWJ1dCcsICdEYXRlIGRlIGZpbiddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzQyNFxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gcGFnZScsXG4gIGp1bXBfdG86ICdBbGxlciDDg8KgJyxcbiAganVtcF90b19jb25maXJtOiAnY29uZmlybWVyJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUGFnZSBwcsODwqljw4PCqWRlbnRlJyxcbiAgbmV4dF9wYWdlOiAnUGFnZSBzdWl2YW50ZScsXG4gIHByZXZfNTogJzUgUGFnZXMgcHLDg8KpY8ODwqlkZW50ZXMnLFxuICBuZXh0XzU6ICc1IFBhZ2VzIHN1aXZhbnRlcycsXG4gIHByZXZfMzogJzMgUGFnZXMgcHLDg8KpY8ODwqlkZW50ZXMnLFxuICBuZXh0XzM6ICczIFBhZ2VzIHN1aXZhbnRlcydcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvZnJfRlInO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9mcl9GUic7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vZnJfRlInO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9mcl9GUic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnZnInLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRyZXInLFxuICAgIGZpbHRlckNvbmZpcm06ICdPSycsXG4gICAgZmlsdGVyUmVzZXQ6ICdSw4PCqWluaXRpYWxpc2VyJyxcbiAgICBzZWxlY3RBbGw6ICdUb3V0IHPDg8KpbGVjdGlvbm5lcicsXG4gICAgc2VsZWN0SW52ZXJ0OiAnSW52ZXJzZXIgbGEgc8ODwqlsZWN0aW9uJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQW5udWxlcicsXG4gICAganVzdE9rVGV4dDogJ09LJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdBbm51bGVyJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnUmVjaGVyY2hlJyxcbiAgICBpdGVtVW5pdDogJ8ODwqlsw4PCqW1lbnQnLFxuICAgIGl0ZW1zVW5pdDogJ8ODwqlsw4PCqW1lbnRzJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdUw4PCqWzDg8KpdmVyc2VtZW50IGVuIGNvdXJzLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnU3VwcHJpbWVyJyxcbiAgICB1cGxvYWRFcnJvcjogJ0VycmV1ciBkZSB0w4PCqWzDg8KpdmVyc2VtZW50JyxcbiAgICBwcmV2aWV3RmlsZTogJ0FmZmljaGVyIGxcXCdhcGVyw4PCp3UgZHUgZmljaGllcidcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0F1Y3VuZSBkb25uw4PCqWUnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ8ODwo0gZGFnJyxcbiAgbm93OiAnTsODwrpuYScsXG4gIGJhY2tUb1RvZGF5OiAnVGlsIGJha2EgdGlsIGRhZ3NpbnMgw4PCrSBkYWcnLFxuICBvazogJ8ODwo0gbGFnaScsXG4gIGNsZWFyOiAnSHJlaW5zYScsXG4gIG1vbnRoOiAnTcODwqFudcODwrB1cicsXG4gIHllYXI6ICfDg8KBcicsXG4gIHRpbWVTZWxlY3Q6ICdWZWxqYSB0w4PCrW1hJyxcbiAgZGF0ZVNlbGVjdDogJ1ZlbGphIGRhZycsXG4gIG1vbnRoU2VsZWN0OiAnVmVsamEgbcODwqFudcODwrAnLFxuICB5ZWFyU2VsZWN0OiAnVmVsamEgw4PCoXInLFxuICBkZWNhZGVTZWxlY3Q6ICdWZWxqYSDDg8KhcmF0dWcnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdEL00vWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QvTS9ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnRnlycmkgbcODwqFudcODwrB1ciAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ07Dg8Kmc3RpIG3Dg8KhbnXDg8KwdXIgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ0Z5cnJhIMODwqFyIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ07Dg8Kmc3RhIMODwqFyIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdGeXJyaSDDg8KhcmF0dWd1cicsXG4gIG5leHREZWNhZGU6ICdOw4PCpnN0aSDDg8KhcmF0dWd1cicsXG4gIHByZXZpb3VzQ2VudHVyeTogJ0Z5cnJpIMODwrZsZCcsXG4gIG5leHRDZW50dXJ5OiAnTsODwqZzdGEgw4PCtmxkJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnVmVsamEgdMODwq1tYSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvaXNfSVMnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvaXNfSVMnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdWZWxkdSBkYWcnLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnVXBwaGFmc2RhZ3VyJywgJ0xva2FkYWd1ciddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyBzw4PCrcODwrB1JyxcbiAganVtcF90bzogJ1PDg8Ktw4PCsGEnLFxuICBqdW1wX3RvX2NvbmZpcm06ICdzdGHDg8KwZmVzdCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ0Z5cnJpIHPDg8Ktw4PCsGEnLFxuICBuZXh0X3BhZ2U6ICdOw4PCpnN0YSBzw4PCrcODwrBhJyxcbiAgcHJldl81OiAnVGlsIGJha2EgNSBzw4PCrcODwrB1cicsXG4gIG5leHRfNTogJ8ODwoFmcmFtIDUgc8ODwq3Dg8KwdXInLFxuICBwcmV2XzM6ICdUaWwgYmFrYSAzIHPDg8Ktw4PCsHVyJyxcbiAgbmV4dF8zOiAnw4PCgWZyYW0gMyBzw4PCrcODwrB1cidcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvaXNfSVMnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9pc19JUyc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vaXNfSVMnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9pc19JUyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnaXMnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0FmbWFya2FuaXInLFxuICAgIGZpbHRlckNvbmZpcm06ICdTdGHDg8KwZmVzdGEnLFxuICAgIGZpbHRlclJlc2V0OiAnTsODwrpsbHN0aWxsYScsXG4gICAgc2VsZWN0QWxsOiAnVmVsamEgYWxsdCcsXG4gICAgc2VsZWN0SW52ZXJ0OiAnVmnDg8Kwc27Dg8K6YSB2YWxpJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ8ODwoFmcmFtJyxcbiAgICBjYW5jZWxUZXh0OiAnSMODwqZ0dGEgdmnDg8KwJyxcbiAgICBqdXN0T2tUZXh0OiAnw4PCjSBsYWdpJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnw4PCgWZyYW0nLFxuICAgIGNhbmNlbFRleHQ6ICdIw4PCpnR0YSB2acODwrAnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdMZWl0YSBow4PCqXInLFxuICAgIGl0ZW1Vbml0OiAnZsODwqZyc2xhJyxcbiAgICBpdGVtc1VuaXQ6ICdmw4PCpnJzbHVyJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdIbGXDg8KwIHVwcC4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ0ZqYXJsw4PCpmdqYSBza3LDg8KhJyxcbiAgICB1cGxvYWRFcnJvcjogJ1ZpbGxhIHZpw4PCsCBhw4PCsCBobGHDg8KwYSB1cHAnLFxuICAgIHByZXZpZXdGaWxlOiAnRm9yc2tvw4PCsGEgc2tyw4PCoSdcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0VuZ2luIGfDg8K2Z24nXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ09nZ2knLFxuICBub3c6ICdhZGVzc28nLFxuICBiYWNrVG9Ub2RheTogJ1Rvcm5hIGFkIG9nZ2knLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICdDaGlhcm8nLFxuICBtb250aDogJ01lc2UnLFxuICB5ZWFyOiAnQW5ubycsXG4gIHRpbWVTZWxlY3Q6ICdTZWxlemlvbmEgaWwgdGVtcG8nLFxuICBkYXRlU2VsZWN0OiAnU2VsZWN0IGRhdGUnLFxuICBtb250aFNlbGVjdDogJ1NlbGV6aW9uYSBsYSBkYXRhJyxcbiAgeWVhclNlbGVjdDogJ1NjZWdsaSB1biBhbm5vJyxcbiAgZGVjYWRlU2VsZWN0OiAnU2NlZ2xpIHVuIGRlY2VubmlvJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC9NL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdEL00vWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ0lsIG1lc2Ugc2NvcnNvIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnSWwgcHJvc3NpbW8gbWVzZSAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnTFxcJ2Fubm8gc2NvcnNvIChDb250cm9sICsgc2luaXN0cmEpJyxcbiAgbmV4dFllYXI6ICdMXFwnYW5ubyBwcm9zc2ltbyAoQ29udHJvbCArIGRlc3RyYSknLFxuICBwcmV2aW91c0RlY2FkZTogJ1VsdGltbyBkZWNlbm5pbycsXG4gIG5leHREZWNhZGU6ICdQcm9zc2ltbyBkZWNlbm5pbycsXG4gIHByZXZpb3VzQ2VudHVyeTogJ1NlY29sbyBwcmVjZWRlbnRlJyxcbiAgbmV4dENlbnR1cnk6ICdQcm9zc2ltbyBzZWNvbG8nXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdTZWxlemlvbmFyZSBpbCB0ZW1wbydcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvaXRfSVQnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvaXRfSVQnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdTZWxlemlvbmFyZSBsYSBkYXRhJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ0RhdGEgZFxcJ2luaXppbycsICdEYXRhIGRpIGZpbmUnXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy80MjRcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHBhZ2luYScsXG4gIGp1bXBfdG86ICd2YWkgYScsXG4gIGp1bXBfdG9fY29uZmlybTogJ0NvbmZlcm1hJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUGFnaW5hIHByZWNlZGVudGUnLFxuICBuZXh0X3BhZ2U6ICdQYWdpbmEgc3VjY2Vzc2l2YScsXG4gIHByZXZfNTogJ1ByZWNlZGVudGUgNSBwYWdpbmUnLFxuICBuZXh0XzU6ICdQcm9zc2ltZSA1IHBhZ2luZScsXG4gIHByZXZfMzogJ1ByZWNlZGVudGUgMyBwYWdpbmUnLFxuICBuZXh0XzM6ICdQcm9zc2ltZSAzIHBhZ2luZSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvaXRfSVQnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9pdF9JVCc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vaXRfSVQnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9pdF9JVCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnaXQnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ01lbsODwrkgRmlsdHJvJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzZXQnLFxuICAgIHNlbGVjdEFsbDogJ1NlbGV6aW9uYSBwYWdpbmEgY29ycmVudGUnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydGkgc2VsZXppb25lIG5lbGxhIHBhZ2luYSBjb3JyZW50ZScsXG4gICAgc29ydFRpdGxlOiAnT3JkaW5hJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQW5udWxsYScsXG4gICAganVzdE9rVGV4dDogJ09LJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdBbm51bGxhJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQ2VyY2EgcXVpJyxcbiAgICBpdGVtVW5pdDogJ2FydGljb2xvJyxcbiAgICBpdGVtc1VuaXQ6ICdlbGVtZW50aSdcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnQ2FyaWNhbWVudG8uLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdSaW11b3ZpIGlsIGZpbGUnLFxuICAgIHVwbG9hZEVycm9yOiAnRXJyb3JlIGRpIGNhcmljYW1lbnRvJyxcbiAgICBwcmV2aWV3RmlsZTogJ0FudGVwcmltYSBmaWxlJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnTmVzc3VuIGRhdG8nXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ8OkwrvCisOmwpfCpScsXG4gIG5vdzogJ8Onwo/CvsOlwpzCqMOmwpnCgsOlwojCuycsXG4gIGJhY2tUb1RvZGF5OiAnw6TCu8KKw6bCl8Klw6PCgcKrw6bCiMK7w6PCgsKLJyxcbiAgb2s6ICfDpsKxwrrDpcKuwponLFxuICB0aW1lU2VsZWN0OiAnw6bCmcKCw6nClsKTw6PCgsKSw6nCgcK4w6bCisKeJyxcbiAgZGF0ZVNlbGVjdDogJ8OmwpfCpcOmwpnCgsOjwoLCksOpwoHCuMOmworCnicsXG4gIGNsZWFyOiAnw6PCgsKvw6PCg8Kqw6PCgsKiJyxcbiAgbW9udGg6ICfDpsKcwognLFxuICB5ZWFyOiAnw6XCucK0JyxcbiAgcHJldmlvdXNNb250aDogJ8OlwonCjcOmwpzCiCAow6PCg8Kaw6PCg8K8w6PCgsK4w6PCgsKiw6PCg8KDw6PCg8KXw6PCgsKtw6PCg8K8KScsXG4gIG5leHRNb250aDogJ8Onwr/CjMOmwpzCiCAow6PCg8Kaw6PCg8K8w6PCgsK4w6PCg8KAw6PCgsKmw6PCg8Kzw6PCgsKtw6PCg8K8KScsXG4gIG1vbnRoU2VsZWN0OiAnw6bCnMKIw6PCgsKSw6nCgcK4w6bCisKeJyxcbiAgeWVhclNlbGVjdDogJ8OlwrnCtMOjwoLCksOpwoHCuMOmworCnicsXG4gIGRlY2FkZVNlbGVjdDogJ8OlwrnCtMOkwrvCo8OjwoLCksOpwoHCuMOmworCnicsXG4gIHllYXJGb3JtYXQ6ICdZWVlZw6XCucK0JyxcbiAgZGF5Rm9ybWF0OiAnRMOmwpfCpScsXG4gIGRhdGVGb3JtYXQ6ICdZWVlZw6XCucK0TcOmwpzCiETDpsKXwqUnLFxuICBkYXRlVGltZUZvcm1hdDogJ1lZWVnDpcK5wrRNw6bCnMKIRMOmwpfCpSBISMOmwpnCgm1tw6XCiMKGc3PDp8KnwpInLFxuICBwcmV2aW91c1llYXI6ICfDpcKJwo3DpcK5wrQgKENvbnRyb2zDo8KCwpLDpsKKwrzDo8KBwpfDo8KBwqrDo8KBwozDo8KCwonDpcK3wqbDo8KCwq3Do8KDwrwpJyxcbiAgbmV4dFllYXI6ICfDp8K/wozDpcK5wrQgKENvbnRyb2zDo8KCwpLDpsKKwrzDo8KBwpfDo8KBwqrDo8KBwozDo8KCwonDpcKPwrPDo8KCwq3Do8KDwrwpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICfDpcKJwo3Do8KBwq7DpcK5wrTDpMK7wqMnLFxuICBuZXh0RGVjYWRlOiAnw6bCrMKhw6PCgcKuw6XCucK0w6TCu8KjJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnw6XCicKNw6PCgcKuw6TCuMKWw6fCtMKAJyxcbiAgbmV4dENlbnR1cnk6ICfDpsKswqHDo8KBwq7DpMK4wpbDp8K0woAnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICfDpsKZwoLDpcKIwrvDo8KCwpLDqcKBwrjDpsKKwp4nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL2phX0pQJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL2phX0pQJztcblxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICfDpsKXwqXDpMK7wpjDo8KCwpLDqcKBwrjDpsKKwp4nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnw6nClsKLw6XCp8KLw6bCl8Klw6TCu8KYJywgJ8OnwrXCgsOkwrrChsOmwpfCpcOkwrvCmCddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyDDo8KDwprDo8KDwrzDo8KCwrgnLFxuICBqdW1wX3RvOiAnw6fCp8K7w6XCi8KVJyxcbiAganVtcF90b19jb25maXJtOiAnw6fCosK6w6jCqsKNw6PCgcKZw6PCgsKLJyxcbiAgcGFnZTogJ8OjwoPCmsOjwoPCvMOjwoLCuCcsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnw6XCicKNw6PCgcKuw6PCg8Kaw6PCg8K8w6PCgsK4JyxcbiAgbmV4dF9wYWdlOiAnw6bCrMKhw6PCgcKuw6PCg8Kaw6PCg8K8w6PCgsK4JyxcbiAgcHJldl81OiAnw6XCicKNIDXDo8KDwprDo8KDwrzDo8KCwrgnLFxuICBuZXh0XzU6ICfDpsKswqEgNcOjwoPCmsOjwoPCvMOjwoLCuCcsXG4gIHByZXZfMzogJ8OlwonCjSAzw6PCg8Kaw6PCg8K8w6PCgsK4JyxcbiAgbmV4dF8zOiAnw6bCrMKhIDPDo8KDwprDo8KDwrzDo8KCwrgnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL2phX0pQJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvamFfSlAnO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL2phX0pQJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvamFfSlAnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2phJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICfDo8KDwqHDo8KDwovDo8KDwqXDo8KDwrzDo8KCwpLDo8KDwpXDo8KCwqPDo8KDwqvDo8KCwr/Do8KDwrwnLFxuICAgIGZpbHRlckNvbmZpcm06ICdPSycsXG4gICAgZmlsdGVyUmVzZXQ6ICfDo8KDwqrDo8KCwrvDo8KDwoPDo8KDwognLFxuICAgIHNlbGVjdEFsbDogJ8OjwoHCmcOjwoHCucOjwoHCpsOjwoLCksOpwoHCuMOmworCnicsXG4gICAgc2VsZWN0SW52ZXJ0OiAnw6nCgcK4w6bCisKew6PCgsKSw6XCj8KNw6jCu8KiJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnw6PCgsKtw6PCg8Kjw6PCg8Kzw6PCgsK7w6PCg8KrJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ8OjwoLCrcOjwoPCo8OjwoPCs8OjwoLCu8OjwoPCqydcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ8OjwoHCk8OjwoHCk8OjwoLCksOmwqTCnMOnwrTCoicsXG4gICAgaXRlbVVuaXQ6ICfDo8KCwqLDo8KCwqTDo8KDwobDo8KDwqAnLFxuICAgIGl0ZW1zVW5pdDogJ8OjwoLCosOjwoLCpMOjwoPChsOjwoPCoCdcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnw6PCgsKiw6PCg8KDw6PCg8KXw6PCg8Ktw6PCg8K8w6PCg8KJw6TCuMKtLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnw6PCg8KVw6PCgsKhw6PCgsKkw6PCg8Krw6PCgsKSw6XCicKKw6nCmcKkJyxcbiAgICB1cGxvYWRFcnJvcjogJ8OjwoLCosOjwoPCg8OjwoPCl8OjwoPCrcOjwoPCvMOjwoPCicOjwoLCqMOjwoPCqcOjwoPCvCcsXG4gICAgcHJldmlld0ZpbGU6ICfDo8KDwpXDo8KCwqHDo8KCwqTDo8KDwqvDo8KCwpLDo8KDwpfDo8KDwqzDo8KDwpPDo8KDwqXDo8KDwrwnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICfDo8KDwofDo8KDwrzDo8KCwr/Do8KBwozDo8KBwoLDo8KCworDo8KBwr7Do8KBwpvDo8KCwpMnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ8OswpjCpMOrworCmCcsXG4gIG5vdzogJ8OtwpjChMOswp7CrCDDrMKLwpzDqsKwwoEnLFxuICBiYWNrVG9Ub2RheTogJ8OswpjCpMOrworCmMOrwqHCnCDDq8KPwozDrMKVwoTDqsKwwoDDqsK4wrAnLFxuICBvazogJ8OtwpnClcOswp3CuCcsXG4gIGNsZWFyOiAnw6zCp8KAw6zCmsKww6rCuMKwJyxcbiAgbW9udGg6ICfDrMKbwpQnLFxuICB5ZWFyOiAnw6vChcKEJyxcbiAgdGltZVNlbGVjdDogJ8OswovCnMOqwrDChCDDrMKEwqDDrcKDwp0nLFxuICBkYXRlU2VsZWN0OiAnw6vCgsKgw6zCp8KcIMOswoTCoMOtwoPCnScsXG4gIG1vbnRoU2VsZWN0OiAnw6vCi8KsIMOswoTCoMOtwoPCnScsXG4gIHllYXJTZWxlY3Q6ICfDrMKXwrAgw6zChMKgw63Cg8KdJyxcbiAgZGVjYWRlU2VsZWN0OiAnw6zCl8Kww6vCjMKAIMOswoTCoMOtwoPCnScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZw6vChcKEJyxcbiAgZGF0ZUZvcm1hdDogJ1lZWVktTU0tREQnLFxuICBkYXlGb3JtYXQ6ICdEbycsXG4gIGRhdGVUaW1lRm9ybWF0OiAnWVlZWS1NTS1ERCBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogZmFsc2UsXG4gIHByZXZpb3VzTW9udGg6ICfDrMKdwrTDrMKgwoQgw6vCi8KsIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnw6vCi8Kkw6zCncKMIMOrwovCrCAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnw6zCncK0w6zCoMKEIMOtwpXCtCAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICfDq8KLwqTDrMKdwowgw63ClcK0IChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICfDrMKdwrTDrMKgwoQgw6zCl8Kww6vCjMKAJyxcbiAgbmV4dERlY2FkZTogJ8OrwovCpMOswp3CjCDDrMKXwrDDq8KMwoAnLFxuICBwcmV2aW91c0NlbnR1cnk6ICfDrMKdwrTDrMKgwoQgw6zChMK4w6rCuMKwJyxcbiAgbmV4dENlbnR1cnk6ICfDq8KLwqTDrMKdwowgw6zChMK4w6rCuMKwJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnw6vCgsKgw6zCp8KcIMOswoTCoMOtwoPCnSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIva29fS1InO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIva29fS1InO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICfDq8KCwqDDrMKnwpwgw6zChMKgw63Cg8KdJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ8OswovCnMOswp7CkcOswp3CvCcsICfDrMKiwoXDq8KjwozDrMKdwrwnXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gw6zCqsK9JyxcbiAganVtcF90bzogJ8Oswp3CtMOrwo/CmcOtwpXCmMOqwrjCsCcsXG4gIGp1bXBfdG9fY29uZmlybTogJ8OtwpnClcOswp3CuMOtwpXCmMOrwovCpCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ8Oswp3CtMOswqDChCDDrcKOwpjDrMKdwrTDrMKnwoAnLFxuICBuZXh0X3BhZ2U6ICfDq8KLwqTDrMKdwowgw63CjsKYw6zCncK0w6zCp8KAJyxcbiAgcHJldl81OiAnw6zCncK0w6zCoMKEIDUgw63CjsKYw6zCncK0w6zCp8KAJyxcbiAgbmV4dF81OiAnw6vCi8Kkw6zCncKMIDUgw63CjsKYw6zCncK0w6zCp8KAJyxcbiAgcHJldl8zOiAnw6zCncK0w6zCoMKEIDMgw63CjsKYw6zCncK0w6zCp8KAJyxcbiAgbmV4dF8zOiAnw6vCi8Kkw6zCncKMIDMgw63CjsKYw6zCncK0w6zCp8KAJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9rb19LUic7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL2tvX0tSJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9rb19LUic7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL2tvX0tSJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdrbycsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnw63ClcKEw63ChMKwIMOrwqnClMOrwonCtCcsXG4gICAgZmlsdGVyQ29uZmlybTogJ8OtwpnClcOswp3CuCcsXG4gICAgZmlsdGVyUmVzZXQ6ICfDrMK0wojDqsK4wrDDrcKZwpQnLFxuICAgIHNlbGVjdEFsbDogJ8OrwqrCqMOrwpHCkCDDrMKEwqDDrcKDwp0nLFxuICAgIHNlbGVjdEludmVydDogJ8OswoTCoMOtwoPCnSDDq8KwwpjDrMKgwoQnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnw63CmcKVw6zCncK4JyxcbiAgICBjYW5jZWxUZXh0OiAnw6zCt8Kow6zChsKMJyxcbiAgICBqdXN0T2tUZXh0OiAnw63CmcKVw6zCncK4J1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnw63CmcKVw6zCncK4JyxcbiAgICBjYW5jZWxUZXh0OiAnw6zCt8Kow6zChsKMJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnw6zCl8Ksw6rCuMKww6zCl8KQIMOqwrLCgMOswoPCicOtwpXCmMOswoTCuMOswprClCcsXG4gICAgaXRlbVVuaXQ6ICfDqsKwwpwnLFxuICAgIGl0ZW1zVW5pdDogJ8OqwrDCnCdcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnw6zCl8KFw6vCocKcw6vCk8KcIMOswqTCkS4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ8OtwozCjMOswp3CvCDDrMKCwq3DrMKgwpwnLFxuICAgIHVwbG9hZEVycm9yOiAnw6zCl8KFw6vCocKcw6vCk8KcIMOswovCpMOtwozCqCcsXG4gICAgcHJldmlld0ZpbGU6ICfDrcKMwozDrMKdwrwgw6vCr8K4w6vCpsKsw6vCs8K0w6rCuMKwJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnw6vCjcKww6zCncK0w63ChMKwIMOswpfChsOswp3CjCdcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnSSBkYWcnLFxuICBub3c6ICdOw4PCpScsXG4gIGJhY2tUb1RvZGF5OiAnR8ODwqUgdGlsIGkgZGFnJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnQW5udWxsZXInLFxuICBtb250aDogJ03Dg8KlbmVkJyxcbiAgeWVhcjogJ8ODwoVyJyxcbiAgdGltZVNlbGVjdDogJ1ZlbGcgdGlkc3B1bmt0JyxcbiAgZGF0ZVNlbGVjdDogJ1ZlbGcgZGF0bycsXG4gIG1vbnRoU2VsZWN0OiAnVmVsZyBtw4PCpW5lZCcsXG4gIHllYXJTZWxlY3Q6ICdWZWxnIMODwqVyJyxcbiAgZGVjYWRlU2VsZWN0OiAnVmVsZyDDg8KlcnRpJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnREQuTU0uWVlZWScsXG4gIGRheUZvcm1hdDogJ0REJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdERC5NTS5ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnRm9ycmlnZSBtw4PCpW5lZChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTmVzdGUgbcODwqVuZWQgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ0ZvcnJpZ2Ugw4PCpXIgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnTmVzdGUgw4PCpXIgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ0ZvcnJpZ2UgdGnDg8KlcicsXG4gIG5leHREZWNhZGU6ICdOZXN0ZSB0acODwqVyJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnRm9ycmlnZSDDg8Klcmh1bmRyZScsXG4gIG5leHRDZW50dXJ5OiAnTmVzdGUgw4PCpXJodW5kcmUnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdWZWxnIHRpZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvbmJfTk8nO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvbmJfTk8nO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdWZWxnIGRhdG8nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnU3RhcnRkYXRvJywgJ1NsdXR0ZGF0byddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyBzaWRlJyxcbiAganVtcF90bzogJ0fDg8KlIHRpbCBzaWRlJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnRm9ycmlnZSBzaWRlJyxcbiAgbmV4dF9wYWdlOiAnTmVzdGUgc2lkZScsXG4gIHByZXZfNTogJzUgZm9ycmlnZScsXG4gIG5leHRfNTogJzUgbmVzdGUnLFxuICBwcmV2XzM6ICczIGZvcnJpZ2UnLFxuICBuZXh0XzM6ICczIG5lc3RlJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9uYl9OTyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL25iX05PJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9uYl9OTyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL25iX05PJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICduYicsXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBQYWdpbmF0aW9uLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVybWVueScsXG4gICAgZmlsdGVyQ29uZmlybTogJ09LJyxcbiAgICBmaWx0ZXJSZXNldDogJ051bGxzdGlsbCcsXG4gICAgc2VsZWN0QWxsOiAnVmVsZyBhbGxlJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICdJbnZlcnRlciB2YWxnJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQXZicnl0JyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0F2YnJ5dCdcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1PDg8K4ayBoZXInLFxuICAgIGl0ZW1Vbml0OiAnZWxlbWVudCcsXG4gICAgaXRlbXNVbml0OiAnZWxlbWVudGVyJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdMYXN0ZXIgb3BwLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnRmplcm4gZmlsJyxcbiAgICB1cGxvYWRFcnJvcjogJ0ZlaWwgdmVkIG9wcGxhc3RuaW5nJyxcbiAgICBwcmV2aWV3RmlsZTogJ0ZvcmjDg8KlbmRzdmlzbmluZydcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0luZ2VuIGRhdGEnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ1ZhbmRhYWcnLFxuICBub3c6ICdOdScsXG4gIGJhY2tUb1RvZGF5OiAnVGVydWcgbmFhciB2YW5kYWFnJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnUmVzZXQnLFxuICBtb250aDogJ01hYW5kJyxcbiAgeWVhcjogJ0phYXInLFxuICB0aW1lU2VsZWN0OiAnU2VsZWN0ZWVyIHRpamQnLFxuICBkYXRlU2VsZWN0OiAnU2VsZWN0ZWVyIGRhdHVtJyxcbiAgbW9udGhTZWxlY3Q6ICdLaWVzIGVlbiBtYWFuZCcsXG4gIHllYXJTZWxlY3Q6ICdLaWVzIGVlbiBqYWFyJyxcbiAgZGVjYWRlU2VsZWN0OiAnS2llcyBlZW4gZGVjZW5uaXVtJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC1NLVlZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdELU0tWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ1ZvcmlnZSBtYWFuZCAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ1ZvbGdlbmRlIG1hYW5kIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdWb3JpZyBqYWFyIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ1ZvbGdlbmQgamFhciAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnVm9yaWcgZGVjZW5uaXVtJyxcbiAgbmV4dERlY2FkZTogJ1ZvbGdlbmQgZGVjZW5uaXVtJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnVm9yaWdlIGVldXcnLFxuICBuZXh0Q2VudHVyeTogJ1ZvbGdlbmRlIGVldXcnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3RlZXIgdGlqZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvbmxfQkUnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvbmxfQkUnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdTZWxlY3RlZXIgZGF0dW0nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnQmVnaW4gZGF0dW0nLCAnRWluZCBkYXR1bSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzQyNFxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gcGFnaW5hJyxcbiAganVtcF90bzogJ0dhIG5hYXInLFxuICBqdW1wX3RvX2NvbmZpcm06ICdiZXZlc3RpZ2VuJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnVm9yaWdlIHBhZ2luYScsXG4gIG5leHRfcGFnZTogJ1ZvbGdlbmRlIHBhZ2luYScsXG4gIHByZXZfNTogJ1ZvcmlnZSA1IHBhZ2luYVxcJ3MnLFxuICBuZXh0XzU6ICdWb2xnZW5kZSA1IHBhZ2luYVxcJ3MnLFxuICBwcmV2XzM6ICdWb3JpZ2UgMyBwYWdpbmFcXCdzJyxcbiAgbmV4dF8zOiAnVm9sZ2VuZGUgMyBwYWdpbmFcXCdzJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9ubF9CRSc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL25sX0JFJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9ubF9CRSc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL25sX0JFJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdubC1iZScsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyTWVudScsXG4gICAgZmlsdGVyQ29uZmlybTogJ09LJyxcbiAgICBmaWx0ZXJSZXNldDogJ1Jlc2V0JyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY3RlZXIgaHVpZGlnZSBwYWdpbmEnLFxuICAgIHNlbGVjdEludmVydDogJ1NlbGVjdGVlciBodWlkaWdlIHBhZ2luYSdcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0FubnVsZWVyJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0FubnVsZWVyJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnWm9layBoaWVyJyxcbiAgICBpdGVtVW5pdDogJ2l0ZW0nLFxuICAgIGl0ZW1zVW5pdDogJ2l0ZW1zJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdVcGxvYWRlbi4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ0Jlc3RhbmQgdmVyd2lqZGVyZW4nLFxuICAgIHVwbG9hZEVycm9yOiAnVXBsb2FkIGZvdXQnLFxuICAgIHByZXZpZXdGaWxlOiAnUHJldmlldyBiZXN0YW5kJ1xuICB9LFxuICBFbXB0eToge1xuICAgIGRlc2NyaXB0aW9uOiAnR2VlbiBnZWdldmVucydcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnVmFuZGFhZycsXG4gIG5vdzogJ051JyxcbiAgYmFja1RvVG9kYXk6ICdUZXJ1ZyBuYWFyIHZhbmRhYWcnLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICdSZXNldCcsXG4gIG1vbnRoOiAnTWFhbmQnLFxuICB5ZWFyOiAnSmFhcicsXG4gIHRpbWVTZWxlY3Q6ICdTZWxlY3RlZXIgdGlqZCcsXG4gIGRhdGVTZWxlY3Q6ICdTZWxlY3RlZXIgZGF0dW0nLFxuICBtb250aFNlbGVjdDogJ0tpZXMgZWVuIG1hYW5kJyxcbiAgeWVhclNlbGVjdDogJ0tpZXMgZWVuIGphYXInLFxuICBkZWNhZGVTZWxlY3Q6ICdLaWVzIGVlbiBkZWNlbm5pdW0nLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdELU0tWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QtTS1ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnVm9yaWdlIG1hYW5kIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnVm9sZ2VuZGUgbWFhbmQgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ1ZvcmlnIGphYXIgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnVm9sZ2VuZCBqYWFyIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdWb3JpZyBkZWNlbm5pdW0nLFxuICBuZXh0RGVjYWRlOiAnVm9sZ2VuZCBkZWNlbm5pdW0nLFxuICBwcmV2aW91c0NlbnR1cnk6ICdWb3JpZ2UgZWV1dycsXG4gIG5leHRDZW50dXJ5OiAnVm9sZ2VuZGUgZWV1dydcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ1NlbGVjdGVlciB0aWpkJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9ubF9OTCc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9ubF9OTCc7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdGVlciBkYXR1bScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydCZWdpbiBkYXR1bScsICdFaW5kIGRhdHVtJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNDI0XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyBwYWdpbmEnLFxuICBqdW1wX3RvOiAnR2EgbmFhcicsXG4gIGp1bXBfdG9fY29uZmlybTogJ2JldmVzdGlnZW4nLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdWb3JpZ2UgcGFnaW5hJyxcbiAgbmV4dF9wYWdlOiAnVm9sZ2VuZGUgcGFnaW5hJyxcbiAgcHJldl81OiAnVm9yaWdlIDUgcGFnaW5hXFwncycsXG4gIG5leHRfNTogJ1ZvbGdlbmRlIDUgcGFnaW5hXFwncycsXG4gIHByZXZfMzogJ1ZvcmlnZSAzIHBhZ2luYVxcJ3MnLFxuICBuZXh0XzM6ICdWb2xnZW5kZSAzIHBhZ2luYVxcJ3MnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL25sX05MJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvbmxfTkwnO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL25sX05MJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvbmxfTkwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ25sJyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICdGaWx0ZXJlbicsXG4gICAgZmlsdGVyQ29uZmlybTogJ09LJyxcbiAgICBmaWx0ZXJSZXNldDogJ1Jlc2V0JyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY3RlZXIgaHVpZGlnZSBwYWdpbmEnLFxuICAgIHNlbGVjdEludmVydDogJ0Rlc2VsZWN0ZWVyIGh1aWRpZ2UgcGFnaW5hJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQW5udWxlcmVuJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0FubnVsZXJlbidcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1pvZWtlbicsXG4gICAgaXRlbVVuaXQ6ICdpdGVtJyxcbiAgICBpdGVtc1VuaXQ6ICdpdGVtcydcbiAgfSxcbiAgVXBsb2FkOiB7XG4gICAgdXBsb2FkaW5nOiAnVXBsb2FkZW4uLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdWZXJ3aWpkZXIgYmVzdGFuZCcsXG4gICAgdXBsb2FkRXJyb3I6ICdGb3V0IHRpamRlbnMgdXBsb2FkZW4nLFxuICAgIHByZXZpZXdGaWxlOiAnQmVraWprIGJlc3RhbmQnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdHZWVuIGdlZ2V2ZW5zJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdEemlzaWFqJyxcbiAgbm93OiAnVGVyYXonLFxuICBiYWNrVG9Ub2RheTogJ1VzdGF3IGR6aXNpYWonLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICdXeWN6ecOFwpvDhMKHJyxcbiAgbW9udGg6ICdNaWVzacOEwoVjJyxcbiAgeWVhcjogJ1JvaycsXG4gIHRpbWVTZWxlY3Q6ICdVc3RhdyBjemFzJyxcbiAgZGF0ZVNlbGVjdDogJ1VzdGF3IGRhdMOEwpknLFxuICBtb250aFNlbGVjdDogJ1d5YmllcnogbWllc2nDhMKFYycsXG4gIHllYXJTZWxlY3Q6ICdXeWJpZXJ6IHJvaycsXG4gIGRlY2FkZVNlbGVjdDogJ1d5YmllcnogZGVrYWTDhMKZJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnRC9NL1lZWVknLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdEL00vWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ1BvcHJ6ZWRuaSBtaWVzacOEwoVjIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTmFzdMOEwplwbnkgbWllc2nDhMKFYyAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnT3N0YXRuaSByb2sgKEN0cmwgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnTmFzdMOEwplwbnkgcm9rIChDdHJsICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdPc3RhdG5pYSBkZWthZGEnLFxuICBuZXh0RGVjYWRlOiAnTmFzdMOEwplwbmEgZGVrYWRhJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnT3N0YXRuaSB3aWVrJyxcbiAgbmV4dENlbnR1cnk6ICdOYXN0w4TCmXBueSB3aWVrJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnV3liaWVyeiBnb2R6aW7DhMKZJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9wbF9QTCc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9wbF9QTCc7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1d5YmllcnogZGF0w4TCmScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydEYXRhIHBvY3rDhMKFdGtvd2EnLCAnRGF0YSBrb8OFwoRjb3dhJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHN0cm9uw4TCmScsXG4gIGp1bXBfdG86ICdJZMOFwrogZG8nLFxuICBqdW1wX3RvX2NvbmZpcm06ICdwb3R3aWVyZHphw4TChycsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1BvcHJ6ZWRuaWEgc3Ryb25hJyxcbiAgbmV4dF9wYWdlOiAnTmFzdMOEwplwbmEgc3Ryb25hJyxcbiAgcHJldl81OiAnUG9wcnplZG5pZSA1IHN0cm9uJyxcbiAgbmV4dF81OiAnTmFzdMOEwplwbmUgNSBzdHJvbicsXG4gIHByZXZfMzogJ1BvcHJ6ZWRuaWUgMyBzdHJvbnknLFxuICBuZXh0XzM6ICdOYXN0w4TCmXBuZSAzIHN0cm9ueSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvcGxfUEwnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9wbF9QTCc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vcGxfUEwnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9wbF9QTCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAncGwnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ01lbnUgZmlsdHJhJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnV3ljennDhcKbw4TChycsXG4gICAgc2VsZWN0QWxsOiAnWmF6bmFjeiBiaWXDhcK8w4TChWPDhMKFIHN0cm9uw4TCmScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnT2R3csODwrPDhMKHIHphem5hY3plbmllJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQW51bHVqJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0FudWx1aidcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1N6dWthaicsXG4gICAgaXRlbVVuaXQ6ICdvYmlla3QnLFxuICAgIGl0ZW1zVW5pdDogJ29iaWVrdHknXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ1d5c3nDhcKCYW5pZS4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ1VzdcOFwoQgcGxpaycsXG4gICAgdXBsb2FkRXJyb3I6ICdCw4XCgsOEwoVkIHd5c3nDhcKCYW5pYScsXG4gICAgcHJldmlld0ZpbGU6ICdQb2RlanJ6eWogcGxpaydcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0JyYWsgZGFueWNoJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdIb2plJyxcbiAgbm93OiAnQWdvcmEnLFxuICBiYWNrVG9Ub2RheTogJ1ZvbHRhciBwYXJhIGhvamUnLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICdMaW1wYXInLFxuICBtb250aDogJ03Dg8KqcycsXG4gIHllYXI6ICdBbm8nLFxuICB0aW1lU2VsZWN0OiAnU2VsZWNpb25hciB0ZW1wbycsXG4gIGRhdGVTZWxlY3Q6ICdTZWxlY2lvbmFyIGRhdGEnLFxuICBtb250aFNlbGVjdDogJ0VzY29saGVyIG3Dg8KqcycsXG4gIHllYXJTZWxlY3Q6ICdFc2NvbGhlciBhbm8nLFxuICBkZWNhZGVTZWxlY3Q6ICdFc2NvbGhlciBkw4PCqWNhZGEnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdEL00vWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QvTS9ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiBmYWxzZSxcbiAgcHJldmlvdXNNb250aDogJ03Dg8KqcyBhbnRlcmlvciAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ1Byw4PCs3hpbW8gbcODwqpzIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdBbm8gYW50ZXJpb3IgKENvbnRyb2wgKyBlc3F1ZXJkYSknLFxuICBuZXh0WWVhcjogJ1Byw4PCs3hpbW8gYW5vIChDb250cm9sICsgZGlyZWl0YSknLFxuICBwcmV2aW91c0RlY2FkZTogJ0TDg8KpY2FkYSBhbnRlcmlvcicsXG4gIG5leHREZWNhZGU6ICdQcsODwrN4aW1hIGTDg8KpY2FkYScsXG4gIHByZXZpb3VzQ2VudHVyeTogJ1PDg8KpY3VsbyBhbnRlcmlvcicsXG4gIG5leHRDZW50dXJ5OiAnUHLDg8KzeGltbyBzw4PCqWN1bG8nXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdIb3JhJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9wdF9CUic7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9wdF9CUic7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjaW9uYXIgZGF0YScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydEYXRhIGRlIGluw4PCrWNpbycsICdEYXRhIGRlIGZpbSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyBww4PCoWdpbmFzJyxcbiAganVtcF90bzogJ1bDg8KhIGF0w4PCqScsXG4gIGp1bXBfdG9fY29uZmlybTogJ2NvbmZpcm1lJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUMODwqFnaW5hIGFudGVyaW9yJyxcbiAgbmV4dF9wYWdlOiAnUHLDg8KzeGltYSBww4PCoWdpbmEnLFxuICBwcmV2XzU6ICc1IHDDg8KhZ2luYXMgYW50ZXJpb3JlcycsXG4gIG5leHRfNTogJzUgcHLDg8KzeGltYXMgcMODwqFnaW5hcycsXG4gIHByZXZfMzogJzMgcMODwqFnaW5hcyBhbnRlcmlvcmVzJyxcbiAgbmV4dF8zOiAnMyBwcsODwrN4aW1hcyBww4PCoWdpbmFzJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9wdF9CUic7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3B0X0JSJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9wdF9CUic7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3B0X0JSJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdwdC1icicsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdHJvJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzZXRhcicsXG4gICAgc2VsZWN0QWxsOiAnU2VsZWNpb25hciBww4PCoWdpbmEgYXR1YWwnLFxuICAgIHNlbGVjdEludmVydDogJ0ludmVydGVyIHNlbGXDg8Knw4PCo28nXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdDYW5jZWxhcicsXG4gICAganVzdE9rVGV4dDogJ09LJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdDYW5jZWxhcidcbiAgfSxcbiAgVHJhbnNmZXI6IHtcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1Byb2N1cmFyJyxcbiAgICBpdGVtVW5pdDogJ2l0ZW0nLFxuICAgIGl0ZW1zVW5pdDogJ2l0ZW1zJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdFbnZpYW5kby4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ1JlbW92ZXIgYXJxdWl2bycsXG4gICAgdXBsb2FkRXJyb3I6ICdFcnJvIG5vIGVudmlvJyxcbiAgICBwcmV2aWV3RmlsZTogJ1Zpc3VhbGl6YXIgYXJxdWl2bydcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ07Dg8KjbyBow4PCoSBkYWRvcydcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnSG9qZScsXG4gIG5vdzogJ0Fnb3JhJyxcbiAgYmFja1RvVG9kYXk6ICdIb2plJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnTGltcGFyJyxcbiAgbW9udGg6ICdNw4PCqnMnLFxuICB5ZWFyOiAnQW5vJyxcbiAgdGltZVNlbGVjdDogJ1NlbGVjaW9uYXIgaG9yYScsXG4gIGRhdGVTZWxlY3Q6ICdTZWxlY2lvbmFyIGRhdGEnLFxuICBtb250aFNlbGVjdDogJ1NlbGVjaW9uYXIgbcODwqpzJyxcbiAgeWVhclNlbGVjdDogJ1NlbGVjaW9uYXIgYW5vJyxcbiAgZGVjYWRlU2VsZWN0OiAnU2VsZWNpb25hciBkw4PCqWNhZGEnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdEL00vWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QvTS9ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnTcODwqpzIGFudGVyaW9yIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTcODwqpzIHNlZ3VpbnRlIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdBbm8gYW50ZXJpb3IgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnQW5vIHNlZ3VpbnRlIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdEw4PCqWNhZGEgYW50ZXJpb3InLFxuICBuZXh0RGVjYWRlOiAnRMODwqljYWRhIHNlZ3VpbnRlJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnU8ODwqljdWxvIGFudGVyaW9yJyxcbiAgbmV4dENlbnR1cnk6ICdTw4PCqWN1bG8gc2VndWludGUnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdIb3JhJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9wdF9QVCc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9wdF9QVCc7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICAuLi5DYWxlbmRhckxvY2FsZSxcbiAgICBwbGFjZWhvbGRlcjogJ0RhdGEnLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnRGF0YSBpbmljaWFsJywgJ0RhdGEgZmluYWwnXSxcbiAgICB0b2RheTogJ0hvamUnLFxuICAgIG5vdzogJ0Fnb3JhJyxcbiAgICBiYWNrVG9Ub2RheTogJ0hvamUnLFxuICAgIG9rOiAnT2snLFxuICAgIGNsZWFyOiAnTGltcGFyJyxcbiAgICBtb250aDogJ03Dg8KqcycsXG4gICAgeWVhcjogJ0FubycsXG4gICAgdGltZVNlbGVjdDogJ0hvcmEnLFxuICAgIGRhdGVTZWxlY3Q6ICdTZWxlY2lvbmFyIGRhdGEnLFxuICAgIG1vbnRoU2VsZWN0OiAnU2VsZWNpb25hciBtw4PCqnMnLFxuICAgIHllYXJTZWxlY3Q6ICdTZWxlY2lvbmFyIGFubycsXG4gICAgZGVjYWRlU2VsZWN0OiAnU2VsZWNpb25hciBkw4PCqWNhZGEnLFxuICAgIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgICBkYXRlRm9ybWF0OiAnRC9NL1lZWVknLFxuICAgIGRheUZvcm1hdDogJ0QnLFxuICAgIGRhdGVUaW1lRm9ybWF0OiAnRC9NL1lZWVkgSEg6bW06c3MnLFxuICAgIG1vbnRoRm9ybWF0OiAnTU1NTScsXG4gICAgbW9udGhCZWZvcmVZZWFyOiBmYWxzZSxcbiAgICBwcmV2aW91c01vbnRoOiAnTcODwqpzIGFudGVyaW9yIChQYWdlVXApJyxcbiAgICBuZXh0TW9udGg6ICdNw4PCqnMgc2VndWludGUgKFBhZ2VEb3duKScsXG4gICAgcHJldmlvdXNZZWFyOiAnQW5vIGFudGVyaW9yIChDb250cm9sICsgbGVmdCknLFxuICAgIG5leHRZZWFyOiAnQW5vIHNlZ3VpbnRlIChDb250cm9sICsgcmlnaHQpJyxcbiAgICBwcmV2aW91c0RlY2FkZTogJ8ODwppsdGltYSBkw4PCqWNhZGEnLFxuICAgIG5leHREZWNhZGU6ICdQcsODwrN4aW1hIGTDg8KpY2FkYScsXG4gICAgcHJldmlvdXNDZW50dXJ5OiAnw4PCmmx0aW1vIHPDg8KpY3VsbycsXG4gICAgbmV4dENlbnR1cnk6ICdQcsODwrN4aW1vIHPDg8KpY3VsbydcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGUsXG4gICAgcGxhY2Vob2xkZXI6ICdIb3JhJ1xuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gcMODwqFnaW5hJyxcbiAganVtcF90bzogJ1NhbHRhcicsXG4gIGp1bXBfdG9fY29uZmlybTogJ2NvbmZpcm1hcicsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1DDg8KhZ2luYSBBbnRlcmlvcicsXG4gIG5leHRfcGFnZTogJ1DDg8KhZ2luYSBTZWd1aW50ZScsXG4gIHByZXZfNTogJ1JlY3VhciA1IFDDg8KhZ2luYXMnLFxuICBuZXh0XzU6ICdBdmFuw4PCp2FyIDUgUMODwqFnaW5hcycsXG4gIHByZXZfMzogJ1JlY3VhciAzIFDDg8KhZ2luYXMnLFxuICBuZXh0XzM6ICdBdmFuw4PCp2FyIDMgUMODwqFnaW5hcydcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvcHRfUFQnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9wdF9QVCc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vcHRfUFQnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9wdF9QVCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAncHQnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRybycsXG4gICAgZmlsdGVyQ29uZmlybTogJ0FwbGljYXInLFxuICAgIGZpbHRlclJlc2V0OiAnUmVpbmljaWFyJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY2lvbmFyIHDDg8KhZ2luYSBhdHVhbCcsXG4gICAgc2VsZWN0SW52ZXJ0OiAnSW52ZXJ0ZXIgc2VsZcODwqfDg8KjbydcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0NhbmNlbGFyJyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0NhbmNlbGFyJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnUHJvY3VyYXIuLi4nLFxuICAgIGl0ZW1Vbml0OiAnaXRlbScsXG4gICAgaXRlbXNVbml0OiAnaXRlbnMnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ0EgY2FycmVnYXIuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdSZW1vdmVyJyxcbiAgICB1cGxvYWRFcnJvcjogJ0Vycm8gYW8gY2FycmVnYXInLFxuICAgIHByZXZpZXdGaWxlOiAnUHLDg8KpLXZpc3VhbGl6YXInXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdTZW0gcmVzdWx0YWRvcydcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnw5DCocOQwrXDkMKzw5DCvsOQwrTDkMK9w5HCjycsXG4gIG5vdzogJ8OQwqHDkMK1w5DCucORwofDkMKww5HCgScsXG4gIGJhY2tUb1RvZGF5OiAnw5DCosOQwrXDkMK6w5HCg8ORwonDkMKww5HCjyDDkMK0w5DCsMORwoLDkMKwJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnw5DCnsORwofDkMK4w5HCgcORwoLDkMK4w5HCgsORwownLFxuICBtb250aDogJ8OQwpzDkMK1w5HCgcORwo/DkcKGJyxcbiAgeWVhcjogJ8OQwpPDkMK+w5DCtCcsXG4gIHRpbWVTZWxlY3Q6ICfDkMKSw5HCi8OQwrHDkcKAw5DCsMORwoLDkcKMIMOQwrLDkcKAw5DCtcOQwrzDkcKPJyxcbiAgZGF0ZVNlbGVjdDogJ8OQwpLDkcKLw5DCscORwoDDkMKww5HCgsORwowgw5DCtMOQwrDDkcKCw5HCgycsXG4gIG1vbnRoU2VsZWN0OiAnw5DCksORwovDkMKxw5HCgMOQwrDDkcKCw5HCjCDDkMK8w5DCtcORwoHDkcKPw5HChicsXG4gIHllYXJTZWxlY3Q6ICfDkMKSw5HCi8OQwrHDkcKAw5DCsMORwoLDkcKMIMOQwrPDkMK+w5DCtCcsXG4gIGRlY2FkZVNlbGVjdDogJ8OQwpLDkcKLw5DCscORwoDDkMKww5HCgsORwowgw5DCtMOQwrXDkcKBw5HCj8ORwoLDkMK4w5DCu8OQwrXDkcKCw5DCuMOQwrUnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdELU0tWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QtTS1ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnw5DCn8ORwoDDkMK1w5DCtMORwovDkMK0w5HCg8ORwonDkMK4w5DCuSDDkMK8w5DCtcORwoHDkcKPw5HChiAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ8OQwqHDkMK7w5DCtcOQwrTDkcKDw5HCjsORwonDkMK4w5DCuSDDkMK8w5DCtcORwoHDkcKPw5HChiAoUGFnZURvd24pJyxcbiAgcHJldmlvdXNZZWFyOiAnw5DCn8ORwoDDkMK1w5DCtMORwovDkMK0w5HCg8ORwonDkMK4w5DCuSDDkMKzw5DCvsOQwrQgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnw5DCocOQwrvDkMK1w5DCtMORwoPDkcKOw5HCicOQwrjDkMK5IMOQwrPDkMK+w5DCtCAoQ29udHJvbCArIHJpZ2h0KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnw5DCn8ORwoDDkMK1w5DCtMORwovDkMK0w5HCg8ORwonDkMK1w5DCtSDDkMK0w5DCtcORwoHDkcKPw5HCgsOQwrjDkMK7w5DCtcORwoLDkMK4w5DCtScsXG4gIG5leHREZWNhZGU6ICfDkMKhw5DCu8OQwrXDkMK0w5HCg8ORwonDkMK1w5DCtSDDkMK0w5DCtcORwoHDkcKPw5HCgsOQwrjDkMK7w5DCtcORwoLDkMK4w5DCtScsXG4gIHByZXZpb3VzQ2VudHVyeTogJ8OQwp/DkcKAw5DCtcOQwrTDkcKLw5DCtMORwoPDkcKJw5DCuMOQwrkgw5DCssOQwrXDkMK6JyxcbiAgbmV4dENlbnR1cnk6ICfDkMKhw5DCu8OQwrXDkMK0w5HCg8ORwo7DkcKJw5DCuMOQwrkgw5DCssOQwrXDkMK6J1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG4vKipcbiAqIENyZWF0ZWQgYnkgQW5kcmV5IEdheXZvcm9uc2t5IG9uIDEzLzA0LzE2LlxuICovXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnw5DCksORwovDkMKxw5DCtcORwoDDkMK4w5HCgsOQwrUgw5DCssORwoDDkMK1w5DCvMORwo8nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuLyoqXG4gKiBDcmVhdGVkIGJ5IEFuZHJleSBHYXl2b3JvbnNreSBvbiAxMy8wNC8xNi5cbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvcnVfUlUnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvcnVfUlUnO1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ8OQwpLDkcKLw5DCscOQwrXDkcKAw5DCuMORwoLDkMK1IMOQwrTDkMKww5HCgsORwoMnLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnw5DCncOQwrDDkcKHw5DCsMOQwrvDkcKMw5DCvcOQwrDDkcKPIMOQwrTDkMKww5HCgsOQwrAnLCAnw5DCmsOQwr7DkMK9w5DCtcORwofDkMK9w5DCsMORwo8gw5DCtMOQwrDDkcKCw5DCsCddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnL8ORwoHDkcKCw5HCgMOQwrDDkMK9w5DCuMORwobDkMK1JyxcbiAganVtcF90bzogJ8OQwp/DkMK1w5HCgMOQwrXDkMK5w5HCgsOQwrgnLFxuICBqdW1wX3RvX2NvbmZpcm06ICfDkMK/w5DCvsOQwrTDkcKCw5DCssOQwrXDkcKAw5DCtMOQwrjDkcKCw5HCjCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ8OQwp3DkMKww5DCt8OQwrDDkMK0JyxcbiAgbmV4dF9wYWdlOiAnw5DCksOQwr/DkMK1w5HCgMOQwrXDkMK0JyxcbiAgcHJldl81OiAnw5DCn8ORwoDDkMK1w5DCtMORwovDkMK0w5HCg8ORwonDkMK4w5DCtSA1JyxcbiAgbmV4dF81OiAnw5DCocOQwrvDkMK1w5DCtMORwoPDkcKOw5HCicOQwrjDkMK1IDUnLFxuICBwcmV2XzM6ICfDkMKfw5HCgMOQwrXDkMK0w5HCi8OQwrTDkcKDw5HCicOQwrjDkMK1IDMnLFxuICBuZXh0XzM6ICfDkMKhw5DCu8OQwrXDkMK0w5HCg8ORwo7DkcKJw5DCuMOQwrUgMydcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvcnVfUlUnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci9ydV9SVSc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vcnVfUlUnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci9ydV9SVSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAncnUnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ8OQwqTDkMK4w5DCu8ORwozDkcKCw5HCgCcsXG4gICAgZmlsdGVyQ29uZmlybTogJ09LJyxcbiAgICBmaWx0ZXJSZXNldDogJ8OQwqHDkMKxw5HCgMOQwr7DkcKBw5DCuMORwoLDkcKMJyxcbiAgICBzZWxlY3RBbGw6ICfDkMKSw5HCi8OQwrHDkcKAw5DCsMORwoLDkcKMIMOQwrLDkcKBw5HCkScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnw5DCmMOQwr3DkMKyw5DCtcORwoDDkcKCw5DCuMORwoDDkMK+w5DCssOQwrDDkcKCw5HCjCDDkMKyw5HCi8OQwrHDkMK+w5HCgCdcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ8OQwp7DkcKCw5DCvMOQwrXDkMK9w5DCsCcsXG4gICAganVzdE9rVGV4dDogJ09LJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICfDkMKew5HCgsOQwrzDkMK1w5DCvcOQwrAnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICfDkMKfw5DCvsOQwrjDkcKBw5DCuicsXG4gICAgaXRlbVVuaXQ6ICfDkcKNw5DCu8OQwrXDkMK8LicsXG4gICAgaXRlbXNVbml0OiAnw5HCjcOQwrvDkMK1w5DCvC4nXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ8OQwpfDkMKww5DCs8ORwoDDkcKDw5DCt8OQwrrDkMKwLi4uJyxcbiAgICByZW1vdmVGaWxlOiAnw5DCo8OQwrTDkMKww5DCu8OQwrjDkcKCw5HCjCDDkcKEw5DCsMOQwrnDkMK7JyxcbiAgICB1cGxvYWRFcnJvcjogJ8OQwp/DkcKAw5DCuCDDkMK3w5DCsMOQwrPDkcKAw5HCg8OQwrfDkMK6w5DCtSDDkMK/w5HCgMOQwr7DkMK4w5DCt8OQwr7DkcKIw5DCu8OQwrAgw5DCvsORwojDkMK4w5DCscOQwrrDkMKwJyxcbiAgICBwcmV2aWV3RmlsZTogJ8OQwp/DkcKAw5DCtcOQwrTDkMK/w5HCgMOQwr7DkcKBw5DCvMOQwr7DkcKCw5HCgCDDkcKEw5DCsMOQwrnDkMK7w5DCsCdcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ8OQwp3DkMK1w5HCgiDDkMK0w5DCsMOQwr3DkMK9w5HCi8ORwoUnXG4gIH1cbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2RheTogJ0RuZXMnLFxuICBub3c6ICdUZXJheicsXG4gIGJhY2tUb1RvZGF5OiAnU3DDg8Kkw4XCpSBuYSBkbmVzJyxcbiAgb2s6ICdPaycsXG4gIGNsZWFyOiAnVnltYXphw4XCpScsXG4gIG1vbnRoOiAnTWVzaWFjJyxcbiAgeWVhcjogJ1JvaycsXG4gIHRpbWVTZWxlY3Q6ICdWeWJyYcOFwqUgw4TCjWFzJyxcbiAgZGF0ZVNlbGVjdDogJ1Z5YnJhw4XCpSBkw4PCoXR1bScsXG4gIG1vbnRoU2VsZWN0OiAnVnlicmHDhcKlIG1lc2lhYycsXG4gIHllYXJTZWxlY3Q6ICdWeWJyYcOFwqUgcm9rJyxcbiAgZGVjYWRlU2VsZWN0OiAnVnlicmHDhcKlIGRla8ODwqFkdScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ0QuTS5ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnRC5NLllZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdQcmVkY2jDg8KhZHphasODwrpjaSBtZXNpYWMgKFBhZ2VVcCknLFxuICBuZXh0TW9udGg6ICdOYXNsZWR1asODwrpjaSBtZXNpYWMgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ1ByZWRjaMODwqFkemFqw4PCumNpIHJvayAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICdOYXNsZWR1asODwrpjaSByb2sgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ1ByZWRjaMODwqFkemFqw4PCumNhIGRla8ODwqFkYScsXG4gIG5leHREZWNhZGU6ICdOYXNsZWR1asODwrpjYSBkZWvDg8KhZGEnLFxuICBwcmV2aW91c0NlbnR1cnk6ICdQcmVkY2jDg8KhZHphasODwrpjZSBzdG9yb8OEwo1pZScsXG4gIG5leHRDZW50dXJ5OiAnTmFzbGVkdWrDg8K6Y2Ugc3Rvcm/DhMKNaWUnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdWeWJyYcOFwqUgw4TCjWFzJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9za19TSyc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci9za19TSyc7XG5cbi8vIMOnwrvCn8OkwrjCgMOlwpDCiMOlwrnCtsOkwrjCusOlwq7CjMOmwpXCtMOnwprChCBMb2NhbGVcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnVnlicmHDhcKlIGTDg8KhdHVtJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ09kJywgJ0RvJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIHN0cmFuYScsXG4gIGp1bXBfdG86ICdDaG/DhMKPIG5hJyxcbiAganVtcF90b19jb25maXJtOiAncG90dnJkaXQnLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdQcmVkY2jDg8KhZHphasODwrpjYSBzdHJhbmEnLFxuICBuZXh0X3BhZ2U6ICdOYXNsZWR1asODwrpjYSBzdHJhbmEnLFxuICBwcmV2XzU6ICdQcmVkY2jDg8KhZHphasODwrpjaWNoIDUgc3Ryw4PCoW4nLFxuICBuZXh0XzU6ICdOYXNsZWR1asODwrpjaWNoIDUgc3Ryw4PCoW4nLFxuICBwcmV2XzM6ICdQcmVkY2jDg8KhZHphasODwrpjZSAzIHN0cmFueScsXG4gIG5leHRfMzogJ05hc2xlZHVqw4PCumNlIDMgc3RyYW55J1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9za19TSyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3NrX1NLJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9za19TSyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3NrX1NLJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdzaycsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnT2Jub3Zpw4XCpScsXG4gICAgc2VsZWN0QWxsOiAnVnlicmHDhcKlIHbDhcKhZXRrbycsXG4gICAgc2VsZWN0SW52ZXJ0OiAnVnlicmHDhcKlIG9wYcOEwo1uw4PCqSdcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ1pydcOFwqFpw4XCpScsXG4gICAganVzdE9rVGV4dDogJ09LJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdacnXDhcKhacOFwqUnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdWeWjDhMK+YWTDg8KhdmFuaWUnLFxuICAgIGl0ZW1Vbml0OiAncG9sb8OFwr5rYScsXG4gICAgaXRlbXNVbml0OiAncG9sb8OFwr5pZWsnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ05haHLDg8KhdmFuaWUuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdPZHN0csODwqFuacOFwqUgc8ODwrpib3InLFxuICAgIHVwbG9hZEVycm9yOiAnQ2h5YmEgcHJpIG5haHLDg8KhdmFuw4PCrScsXG4gICAgcHJldmlld0ZpbGU6ICdab2JyYXppw4XCpSBzw4PCumJvcidcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ8OFwr1pYWRuZSBkw4PCoXRhJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdEYW5lcycsXG4gIG5vdzogJ1pkYWonLFxuICBiYWNrVG9Ub2RheTogJ05hemFqIG5hIGRhbmVzJyxcbiAgb2s6ICdWIHJlZHUnLFxuICBjbGVhcjogJ1Bvw4TCjWlzdGknLFxuICBtb250aDogJ01lc2VjJyxcbiAgeWVhcjogJ0xldG8nLFxuICB0aW1lU2VsZWN0OiAnSXpiZXJpIMOEwo1hcycsXG4gIGRhdGVTZWxlY3Q6ICdJemJlcmkgZGF0dW0nLFxuICBtb250aFNlbGVjdDogJ0l6YmVyaSBtZXNlYycsXG4gIHllYXJTZWxlY3Q6ICdJemJlcmkgbGV0bycsXG4gIGRlY2FkZVNlbGVjdDogJ0l6YmVyaSBkZXNldGxldGplJyxcbiAgeWVhckZvcm1hdDogJ1lZWVknLFxuICBkYXRlRm9ybWF0OiAnREQuTU0uWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0RELk1NLllZWVkgSEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdQcmVkaG9kbmppIG1lc2VjIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTmFzbGVkbmppIG1lc2VjIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICdQcmVqw4XCoW5qZSBsZXRvIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ05hc2xlZG5qZSBsZXRvIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdQcmVqw4XCoW5qZSBkZXNldGxldGplJyxcbiAgbmV4dERlY2FkZTogJ05hc2xlZG5qZSBkZXNldGxldGplJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnUHJlasOFwqFuamUgc3RvbGV0amUnLFxuICBuZXh0Q2VudHVyeTogJ05hc2xlZG5qZSBzdG9sZXRqZSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuY29uc3QgbG9jYWxlID0ge1xuICBwbGFjZWhvbGRlcjogJ0l6YmVyaXRlIMOEwo1hcydcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvc2xfU0knO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvc2xfU0knO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdJemJlcml0ZSBkYXR1bScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydaYcOEwo1ldG5pIGRhdHVtJywgJ0tvbsOEwo1uaSBkYXR1bSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyBzdHJhbicsXG4gIGp1bXBfdG86ICdQb2pkaSBuYScsXG4gIGp1bXBfdG9fY29uZmlybTogJ3BvdHJkaScsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ1ByZWrDhcKhbmphIHN0cmFuJyxcbiAgbmV4dF9wYWdlOiAnTmFzbGVkbmphIHN0cmFuJyxcbiAgcHJldl81OiAnUHJlasOFwqFuamloIDUgU3RyYW5pJyxcbiAgbmV4dF81OiAnTmFzbGVkbmppaCA1IFN0cmFuaScsXG4gIHByZXZfMzogJ1ByZWrDhcKhbmplIDMgU3RyYW5pJyxcbiAgbmV4dF8zOiAnTmFzbGVkbmplIDMgU3RyYW5pJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9zbF9TSSc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3NsX1NJJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9zbF9TSSc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3NsX1NJJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdzbCcsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnRmlsdHJpcmFqJyxcbiAgICBmaWx0ZXJSZXNldDogJ1BvYnJpw4XCoWkgZmlsdGVyJyxcbiAgICBzZWxlY3RBbGw6ICdJemJlcmkgdnNlIG5hIHRyZW51dG5pIHN0cmFuaScsXG4gICAgc2VsZWN0SW52ZXJ0OiAnT2JybmkgaXpib3IgbmEgdHJlbnV0bmkgc3RyYW5pJ1xuICB9LFxuICBNb2RhbDoge1xuICAgIG9rVGV4dDogJ1YgcmVkdScsXG4gICAgY2FuY2VsVGV4dDogJ1ByZWtsacOEwo1pJyxcbiAgICBqdXN0T2tUZXh0OiAnViByZWR1J1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAndiByZWR1JyxcbiAgICBjYW5jZWxUZXh0OiAnUHJla2xpw4TCjWknXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdJw4XCocOEwo1pIHR1a2FqJyxcbiAgICBpdGVtVW5pdDogJ09iamVrdCcsXG4gICAgaXRlbXNVbml0OiAnT2JqZWt0b3YnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ05hbGFnYW5qZS4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ09kc3RyYW5pIGRhdG90ZWtvJyxcbiAgICB1cGxvYWRFcnJvcjogJ05hcGFrYSBwcmkgbmFsYWdhbmp1JyxcbiAgICBwcmV2aWV3RmlsZTogJ1ByZWRvZ2xlZCBkYXRvdGVrZSdcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ05pIHBvZGF0a292J1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdEYW5hcycsXG4gIG5vdzogJ1NhZGEnLFxuICBiYWNrVG9Ub2RheTogJ1ZyYXRpIHNlIG5hIGRhbmFzJyxcbiAgb2s6ICdVIHJlZHUnLFxuICBjbGVhcjogJ09icmnDhcKhaScsXG4gIG1vbnRoOiAnTWVzZWMnLFxuICB5ZWFyOiAnR29kaW5hJyxcbiAgdGltZVNlbGVjdDogJ0l6YWJlcmkgdnJlbWUnLFxuICBkYXRlU2VsZWN0OiAnSXphYmVyaSBkYXR1bScsXG4gIG1vbnRoU2VsZWN0OiAnSXphYmVyaSBtZXNlYycsXG4gIHllYXJTZWxlY3Q6ICdJemFiZXJpIGdvZGludScsXG4gIGRlY2FkZVNlbGVjdDogJ0l6YWJlcmkgZGVjZW5panUnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdERC5NTS5ZWVlZJyxcbiAgZGF5Rm9ybWF0OiAnRCcsXG4gIGRhdGVUaW1lRm9ybWF0OiAnREQuTU0uWVlZWSBISDptbTpzcycsXG4gIG1vbnRoQmVmb3JlWWVhcjogdHJ1ZSxcbiAgcHJldmlvdXNNb250aDogJ1ByZXRob2RuaSBtZXNlYyAoUGFnZVVwKScsXG4gIG5leHRNb250aDogJ1NsZWRlw4TCh2kgbWVzZWMgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ1ByZXRob2RuYSBnb2RpbmEgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnU2xlZGXDhMKHYSBnb2RpbmEgKENvbnRyb2wgKyByaWdodCknLFxuICBwcmV2aW91c0RlY2FkZTogJ1ByZXRob2RuYSBkZWNlbmlqYScsXG4gIG5leHREZWNhZGU6ICdTbGVkZcOEwodhIGRlY2VuaWphJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnUHJldGhvZG5pIHZlaycsXG4gIG5leHRDZW50dXJ5OiAnU2xlZGXDhMKHaSB2ZWsnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdJemFiZXJpdGUgdnJlbWUnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL3NyX1JTJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL3NyX1JTJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnSXphYmVyaXRlIGRhdHVtJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ1Bvw4TCjWV0bmkgZGF0dW0nLCAnS3Jham5qaSBkYXR1bSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyBzdHJhbmknLFxuICBqdW1wX3RvOiAnSWRpIG5hJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnUHJldGhvZG5hIHN0cmFuYScsXG4gIG5leHRfcGFnZTogJ1NsZWRlw4TCh2Egc3RyYW5hJyxcbiAgcHJldl81OiAnUHJldGhvZG5paCA1IFN0cmFuYScsXG4gIG5leHRfNTogJ1NsZWRlw4TCh2loIDUgU3RyYW5hJyxcbiAgcHJldl8zOiAnUHJldGhvZG5paCAzIFN0cmFuZScsXG4gIG5leHRfMzogJ1NsZWRlw4TCh2loIDMgU3RyYW5lJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9zcl9SUyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3NyX1JTJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9zcl9SUyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3NyX1JTJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICdzcicsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnRmlsdGVyJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnUHJpbWVuaSBmaWx0ZXInLFxuICAgIGZpbHRlclJlc2V0OiAnUmVzZXR1aiBmaWx0ZXInLFxuICAgIHNlbGVjdEFsbDogJ09iZWxlw4XCvmkgc3ZlIG5hIHRyZW51dG5vaiBzdHJhbmknLFxuICAgIHNlbGVjdEludmVydDogJ09icm5pIHNlbGVrY2lqdSBuYSB0cmVudXRub2ogc3RyYW5pY2knXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnVSByZWR1JyxcbiAgICBjYW5jZWxUZXh0OiAnT3RrYcOFwr5pJyxcbiAgICBqdXN0T2tUZXh0OiAnVSByZWR1J1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnVSByZWR1JyxcbiAgICBjYW5jZWxUZXh0OiAnT3RrYcOFwr5pJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnUHJldHJhw4XCvml0ZSBvdmRlJyxcbiAgICBpdGVtVW5pdDogJ3N0YXZrYScsXG4gICAgaXRlbXNVbml0OiAnc3RhdmtpJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICdTbGFuamUuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICdVa2xvbmkgZmFqbCcsXG4gICAgdXBsb2FkRXJyb3I6ICdHcmXDhcKha2EgcHJpbGlrb20gc2xhbmphJyxcbiAgICBwcmV2aWV3RmlsZTogJ1BvZ2xlZGFqIGZhamwnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdOZW1hIHBvZGF0YWthJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICdJIGRhZycsXG4gIG5vdzogJ051JyxcbiAgYmFja1RvVG9kYXk6ICdUaWxsIGlkYWcnLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICdBdmJyeXQnLFxuICBtb250aDogJ03Dg8KlbmFkJyxcbiAgeWVhcjogJ8ODwoVyJyxcbiAgdGltZVNlbGVjdDogJ1bDg8KkbGogdGlkcHVua3QnLFxuICBkYXRlU2VsZWN0OiAnVsODwqRsaiBkYXR1bScsXG4gIG1vbnRoU2VsZWN0OiAnVsODwqRsaiBtw4PCpW5hZCcsXG4gIHllYXJTZWxlY3Q6ICdWw4PCpGxqIMODwqVyJyxcbiAgZGVjYWRlU2VsZWN0OiAnVsODwqRsaiDDg8KlcnRpb25kZScsXG4gIHllYXJGb3JtYXQ6ICdZWVlZJyxcbiAgZGF0ZUZvcm1hdDogJ1lZWVktTU0tREQnLFxuICBkYXlGb3JtYXQ6ICdEJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdZWVlZLU1NLUREIEg6bW06c3MnLFxuICBtb250aEJlZm9yZVllYXI6IHRydWUsXG4gIHByZXZpb3VzTW9udGg6ICdGw4PCtnJyYSBtw4PCpW5hZGVuIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnTsODwqRzdGEgbcODwqVuYWQgKFBhZ2VEb3duKScsXG4gIHByZXZpb3VzWWVhcjogJ0bDg8K2cmVnIMODwqVyIChDb250cm9sICsgbGVmdCknLFxuICBuZXh0WWVhcjogJ07Dg8Kkc3RhIMODwqVyIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICdGw4PCtnJlZyDDg8KlcnRpb25kZScsXG4gIG5leHREZWNhZGU6ICdOw4PCpHN0YSDDg8KlcnRpb25kZScsXG4gIHByZXZpb3VzQ2VudHVyeTogJ0bDg8K2cmVnIMODwqVyaHVuZHJhZGUnLFxuICBuZXh0Q2VudHVyeTogJ07Dg8Kkc3RhIMODwqVyaHVuZHJhZGUnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdWw4PCpGxqIHRpZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvc3ZfU0UnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvc3ZfU0UnO1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1bDg8KkbGogZGF0dW0nLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnU3RhcnRkYXR1bScsICdTbHV0ZGF0dW0nXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG4vLyBBbGwgc2V0dGluZ3MgYXQ6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvbG9jYWxlL2V4YW1wbGUuanNvblxuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICAvLyBPcHRpb25zLmpzeFxuICBpdGVtc19wZXJfcGFnZTogJy8gc2lkYScsXG4gIGp1bXBfdG86ICdHw4PCpSB0aWxsJyxcbiAganVtcF90b19jb25maXJtOiAnYmVrcsODwqRmdGEnLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdGw4PCtnJlZyBzaWRhJyxcbiAgbmV4dF9wYWdlOiAnTsODwqRzdGEgc2lkYScsXG4gIHByZXZfNTogJ0bDg8K2cmVnIDUgc2lkb3InLFxuICBuZXh0XzU6ICdOw4PCpHN0YSA1IHNpZG9yJyxcbiAgcHJldl8zOiAnRsODwrZyZWcgMyBzaWRvcicsXG4gIG5leHRfMzogJ07Dg8Kkc3RhIDMgc2lkb3InXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhciBmcm9tICcuL2NhbGVuZGFyL3N2X1NFJztcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJy4vZGF0ZS1waWNrZXIvc3ZfU0UnO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnLi9wYWdpbmF0aW9uL3N2X1NFJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vdGltZS1waWNrZXIvc3ZfU0UnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ3N2JyxcbiAgUGFnaW5hdGlvbixcbiAgRGF0ZVBpY2tlcixcbiAgVGltZVBpY2tlcixcbiAgQ2FsZW5kYXIsXG4gIFRhYmxlOiB7XG4gICAgZmlsdGVyVGl0bGU6ICdGaWx0ZXJtZW55JyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnUmVuc2EnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnT0snLFxuICAgIGNhbmNlbFRleHQ6ICdBdmJyeXQnLFxuICAgIGp1c3RPa1RleHQ6ICdPSydcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ09LJyxcbiAgICBjYW5jZWxUZXh0OiAnQXZicnl0J1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU8ODwrZrJyxcbiAgICBpdGVtVW5pdDogJ2VsZW1lbnQnLFxuICAgIGl0ZW1zVW5pdDogJ2VsZW1lbnQnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdJbmdlbiBpbmZvcm1hdGlvbidcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRvZGF5OiAnw6DCuMKnw6DCuMKxw6DCuMKZw6DCuMKZw6DCuMK1w6DCucKJJyxcbiAgbm93OiAnw6DCuMKVw6DCuMKtw6DCuMKZw6DCuMKZw6DCuMK1w6DCucKJJyxcbiAgYmFja1RvVG9kYXk6ICfDoMK4woHDoMK4wqXDoMK4wrHDoMK4wprDoMK5woTDoMK4wpvDoMK4wqLDoMK4wrHDoMK4wofDoMK4wqfDoMK4wrHDoMK4wpnDoMK4wpnDoMK4wrXDoMK5woknLFxuICBvazogJ8OgwrjClcOgwrjCgcOgwrjCpcOgwrjChycsXG4gIGNsZWFyOiAnw6DCuMKlw6DCuMKaw6DCuMKlw6DCucKJw6DCuMKyw6DCuMKHJyxcbiAgbW9udGg6ICfDoMK5woDDoMK4wpTDoMK4wrfDoMK4wq3DoMK4wpknLFxuICB5ZWFyOiAnw6DCuMKbw6DCuMK1JyxcbiAgdGltZVNlbGVjdDogJ8OgwrnCgMOgwrjCpcOgwrjCt8OgwrjCrcOgwrjCgcOgwrnCgMOgwrjCp8OgwrjCpcOgwrjCsicsXG4gIGRhdGVTZWxlY3Q6ICfDoMK5woDDoMK4wqXDoMK4wrfDoMK4wq3DoMK4woHDoMK4wqfDoMK4wrHDoMK4wpknLFxuICBtb250aFNlbGVjdDogJ8OgwrnCgMOgwrjCpcOgwrjCt8OgwrjCrcOgwrjCgcOgwrnCgMOgwrjClMOgwrjCt8OgwrjCrcOgwrjCmScsXG4gIHllYXJTZWxlY3Q6ICfDoMK5woDDoMK4wqXDoMK4wrfDoMK4wq3DoMK4woHDoMK4wpvDoMK4wrUnLFxuICBkZWNhZGVTZWxlY3Q6ICfDoMK5woDDoMK4wqXDoMK4wrfDoMK4wq3DoMK4woHDoMK4wpfDoMK4wqjDoMK4wqfDoMK4wqPDoMK4wqPDoMK4wqknLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdEL00vWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QvTS9ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnw6DCucKAw6DCuMKUw6DCuMK3w6DCuMKtw6DCuMKZw6DCuMKBw6DCucKIw6DCuMKtw6DCuMKZw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyIChQYWdlVXApJyxcbiAgbmV4dE1vbnRoOiAnw6DCucKAw6DCuMKUw6DCuMK3w6DCuMKtw6DCuMKZw6DCuMKWw6DCuMKxw6DCuMKUw6DCucKEw6DCuMKbIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICfDoMK4wpvDoMK4wrXDoMK4woHDoMK5wojDoMK4wq3DoMK4wpnDoMK4wqvDoMK4wpnDoMK5wonDoMK4wrIgKENvbnRyb2wgKyBsZWZ0KScsXG4gIG5leHRZZWFyOiAnw6DCuMKbw6DCuMK1w6DCuMKWw6DCuMKxw6DCuMKUw6DCucKEw6DCuMKbIChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICfDoMK4wpfDoMK4wqjDoMK4wqfDoMK4wqPDoMK4wqPDoMK4wqnDoMK4woHDoMK5wojDoMK4wq3DoMK4wpnDoMK4wqvDoMK4wpnDoMK5wonDoMK4wrInLFxuICBuZXh0RGVjYWRlOiAnw6DCuMKXw6DCuMKow6DCuMKnw6DCuMKjw6DCuMKjw6DCuMKpw6DCuMKWw6DCuMKxw6DCuMKUw6DCucKEw6DCuMKbJyxcbiAgcHJldmlvdXNDZW50dXJ5OiAnw6DCuMKow6DCuMKVw6DCuMKnw6DCuMKjw6DCuMKjw6DCuMKpw6DCuMKBw6DCucKIw6DCuMKtw6DCuMKZw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyJyxcbiAgbmV4dENlbnR1cnk6ICfDoMK4wqjDoMK4wpXDoMK4wqfDoMK4wqPDoMK4wqPDoMK4wqnDoMK4wpbDoMK4wrHDoMK4wpTDoMK5woTDoMK4wpsnXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICfDoMK5woDDoMK4wqXDoMK4wrfDoMK4wq3DoMK4woHDoMK5woDDoMK4wqfDoMK4wqXDoMK4wrInXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL3RoX1RIJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL3RoX1RIJztcblxuLy8gTWVyZ2UgaW50byBhIGxvY2FsZSBvYmplY3RcbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZyAgICAgICAgICAgIDoge1xuICAgIHBsYWNlaG9sZGVyICAgICA6ICfDoMK5woDDoMK4wqXDoMK4wrfDoMK4wq3DoMK4woHDoMK4wqfDoMK4wrHDoMK4wpnDoMK4wpfDoMK4wrXDoMK5wognLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsgJ8OgwrjCp8OgwrjCscOgwrjCmcOgwrnCgMOgwrjCo8OgwrjCtMOgwrnCiMOgwrjCocOgwrjClcOgwrnCicOgwrjCmScsICfDoMK4wqfDoMK4wrHDoMK4wpnDoMK4wqrDoMK4wrTDoMK5wonDoMK4wpnDoMK4wqrDoMK4wrjDoMK4wpQnIF0sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZTogeyAuLi5UaW1lUGlja2VyTG9jYWxlIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyDDoMK4wqvDoMK4wpnDoMK5wonDoMK4wrInLFxuICBqdW1wX3RvOiAnw6DCucKEw6DCuMKbw6DCuMKiw6DCuMKxw6DCuMKHJyxcbiAganVtcF90b19jb25maXJtOiAnw6DCuMKiw6DCuMK3w6DCuMKZw6DCuMKiw6DCuMKxw6DCuMKZJyxcbiAgcGFnZTogJycsXG5cbiAgLy8gUGFnaW5hdGlvbi5qc3hcbiAgcHJldl9wYWdlOiAnw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyw6DCuMKBw6DCucKIw6DCuMKtw6DCuMKZw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyJyxcbiAgbmV4dF9wYWdlOiAnw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyw6DCuMKWw6DCuMKxw6DCuMKUw6DCucKEw6DCuMKbJyxcbiAgcHJldl81OiAnw6DCuMKiw6DCucKJw6DCuMKtw6DCuMKZw6DCuMKBw6DCuMKlw6DCuMKxw6DCuMKaIDUgw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyJyxcbiAgbmV4dF81OiAnw6DCuMKWw6DCuMKxw6DCuMKUw6DCucKEw6DCuMKbIDUgw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyJyxcbiAgcHJldl8zOiAnw6DCuMKiw6DCucKJw6DCuMKtw6DCuMKZw6DCuMKBw6DCuMKlw6DCuMKxw6DCuMKaIDMgw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyJyxcbiAgbmV4dF8zOiAnw6DCuMKWw6DCuMKxw6DCuMKUw6DCucKEw6DCuMKbIDMgw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci90aF9USCc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3RoX1RIJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi90aF9USCc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3RoX1RIJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICd0aCcsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnw6DCuMKVw6DCuMKxw6DCuMKnw6DCuMKBw6DCuMKjw6DCuMKtw6DCuMKHJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnw6DCuMKiw6DCuMK3w6DCuMKZw6DCuMKiw6DCuMKxw6DCuMKZJyxcbiAgICBmaWx0ZXJSZXNldDogJ8OgwrjCo8OgwrjCtcOgwrnCgMOgwrjCi8OgwrnCh8OgwrjClScsXG4gICAgc2VsZWN0QWxsOiAnw6DCucKAw6DCuMKlw6DCuMK3w6DCuMKtw6DCuMKBw6DCuMKXw6DCuMKxw6DCucKJw6DCuMKHw6DCuMKrw6DCuMKhw6DCuMKUw6DCucKDw6DCuMKZw6DCuMKrw6DCuMKZw6DCucKJw6DCuMKyw6DCuMKZw6DCuMK1w6DCucKJJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICfDoMK5woDDoMK4wqXDoMK4wrfDoMK4wq3DoMK4woHDoMK4wqrDoMK4wpbDoMK4wrLDoMK4wpnDoMK4wrDDoMK4wpXDoMK4wqPDoMK4wofDoMK4woHDoMK4wrHDoMK4wpnDoMK4woLDoMK5wonDoMK4wrLDoMK4wqEnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnw6DCuMKVw6DCuMKBw6DCuMKlw6DCuMKHJyxcbiAgICBjYW5jZWxUZXh0OiAnw6DCuMKiw6DCuMKBw6DCucKAw6DCuMKlw6DCuMK0w6DCuMKBJyxcbiAgICBqdXN0T2tUZXh0OiAnw6DCuMKVw6DCuMKBw6DCuMKlw6DCuMKHJ1xuICB9LFxuICBQb3Bjb25maXJtOiB7XG4gICAgb2tUZXh0OiAnw6DCuMKVw6DCuMKBw6DCuMKlw6DCuMKHJyxcbiAgICBjYW5jZWxUZXh0OiAnw6DCuMKiw6DCuMKBw6DCucKAw6DCuMKlw6DCuMK0w6DCuMKBJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnw6DCuMKEw6DCucKJw6DCuMKZw6DCuMKrw6DCuMKyJyxcbiAgICBpdGVtVW5pdDogJ8OgwrjCisOgwrjCtMOgwrnCicOgwrjCmScsXG4gICAgaXRlbXNVbml0OiAnw6DCuMKKw6DCuMK0w6DCucKJw6DCuMKZJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDoMK4woHDoMK4wrPDoMK4wqXDoMK4wrHDoMK4wofDoMK4wq3DoMK4wrHDoMK4wpvDoMK5woLDoMK4wqvDoMK4wqXDoMK4wpQuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICfDoMK4wqXDoMK4wprDoMK5woTDoMK4wp/DoMK4wqXDoMK5wownLFxuICAgIHVwbG9hZEVycm9yOiAnw6DCucKAw6DCuMKBw6DCuMK0w6DCuMKUw6DCuMKCw6DCucKJw6DCuMKtw6DCuMKcw6DCuMK0w6DCuMKUw6DCuMKew6DCuMKlw6DCuMKyw6DCuMKUw6DCucKDw6DCuMKZw6DCuMKBw6DCuMKyw6DCuMKjw6DCuMKtw6DCuMKxw6DCuMKbw6DCucKCw6DCuMKrw6DCuMKlw6DCuMKUJyxcbiAgICBwcmV2aWV3RmlsZTogJ8OgwrjClMOgwrjCucOgwrjClcOgwrjCscOgwrjCp8OgwrjCrcOgwrjCosOgwrnCiMOgwrjCssOgwrjCh8OgwrnChMOgwrjCn8OgwrjCpcOgwrnCjCdcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ8OgwrnChMOgwrjCocOgwrnCiMOgwrjCocOgwrjCtcOgwrjCgsOgwrnCicOgwrjCrcOgwrjCocOgwrjCucOgwrjCpSdcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnWmFtYW4gU2XDg8KnJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci9lbl9VUyc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci90cl9UUic7XG5cbi8vIE1lcmdlIGludG8gYSBsb2NhbGUgb2JqZWN0XG5jb25zdCBsb2NhbGUgPSB7XG4gIGxhbmc6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1RhcmloIFNlw4PCpycsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydCYcOFwp9sYW5nw4TCscODwqcgVGFyaWhpJywgJ0JpdGnDhcKfIFRhcmloaSddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci9lbl9VUyc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3RyX1RSJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi9lbl9VUyc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3RyX1RSJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICd0cicsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnTWVuw4PCvCBGaWx0cmVsZScsXG4gICAgZmlsdGVyQ29uZmlybTogJ1RhbWFtJyxcbiAgICBmaWx0ZXJSZXNldDogJ1PDhMKxZsOEwrFybGEnLFxuICAgIHNlbGVjdEFsbDogJ0hlcHNpbmkgU2XDg8KnJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICdUZXJzaW5pIFNlw4PCpydcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdUYW1hbScsXG4gICAgY2FuY2VsVGV4dDogJ8OEwrBwdGFsJyxcbiAgICBqdXN0T2tUZXh0OiAnVGFtYW0nXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdUYW1hbScsXG4gICAgY2FuY2VsVGV4dDogJ8OEwrBwdGFsJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQXJhbWEnLFxuICAgIGl0ZW1Vbml0OiAnw4PClsOEwp9lJyxcbiAgICBpdGVtc1VuaXQ6ICfDg8KWw4TCn2VsZXInXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ1nDg8K8a2xlbml5b3IuLi4nLFxuICAgIHJlbW92ZUZpbGU6IGBEb3N5YXnDhMKxIGthbGTDhMKxcmAsXG4gICAgdXBsb2FkRXJyb3I6ICdZw4PCvGtsZW1lIEhhdGFzw4TCsScsXG4gICAgcHJldmlld0ZpbGU6IGBEb3N5YXnDhMKxIMODwpZuaXpsZWBcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1ZlcmkgWW9rJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICfDkMKhw5HCjMOQwr7DkMKzw5DCvsOQwrTDkMK9w5HClicsXG4gIG5vdzogJ8OQwpfDkMKww5HCgMOQwrDDkMK3JyxcbiAgYmFja1RvVG9kYXk6ICfDkMKfw5DCvsORwoLDkMK+w5HCh8OQwr3DkMKwIMOQwrTDkMKww5HCgsOQwrAnLFxuICBvazogJ09rJyxcbiAgY2xlYXI6ICfDkMKew5HCh8OQwrjDkcKBw5HCgsOQwrjDkcKCw5DCuCcsXG4gIG1vbnRoOiAnw5DCnMORwpbDkcKBw5HCj8ORwobDkcKMJyxcbiAgeWVhcjogJ8OQwqDDkcKWw5DCuicsXG4gIHRpbWVTZWxlY3Q6ICfDkMKew5DCscORwoDDkMKww5HCgsOQwrggw5HCh8OQwrDDkcKBJyxcbiAgZGF0ZVNlbGVjdDogJ8OQwp7DkMKxw5HCgMOQwrDDkcKCw5DCuCDDkMK0w5DCsMORwoLDkcKDJyxcbiAgbW9udGhTZWxlY3Q6ICfDkMKew5DCscORwoDDkMKww5HCgsOQwrggw5DCvMORwpbDkcKBw5HCj8ORwobDkcKMJyxcbiAgeWVhclNlbGVjdDogJ8OQwp7DkMKxw5HCgMOQwrDDkcKCw5DCuCDDkcKAw5HClsOQwronLFxuICBkZWNhZGVTZWxlY3Q6ICfDkMKew5DCscORwoDDkMKww5HCgsOQwrggw5DCtMOQwrXDkcKBw5HCj8ORwoLDkMK4w5HCgMORwpbDkcKHw5HCh8ORwo8nLFxuICB5ZWFyRm9ybWF0OiAnWVlZWScsXG4gIGRhdGVGb3JtYXQ6ICdELU0tWVlZWScsXG4gIGRheUZvcm1hdDogJ0QnLFxuICBkYXRlVGltZUZvcm1hdDogJ0QtTS1ZWVlZIEhIOm1tOnNzJyxcbiAgbW9udGhCZWZvcmVZZWFyOiB0cnVlLFxuICBwcmV2aW91c01vbnRoOiAnw5DCn8OQwr7DkMK/w5DCtcORwoDDkMK1w5DCtMOQwr3DkcKWw5DCuSDDkMK8w5HClsORwoHDkcKPw5HChsORwowgKFBhZ2VVcCknLFxuICBuZXh0TW9udGg6ICfDkMKdw5DCsMORwoHDkcKCw5HCg8OQwr/DkMK9w5DCuMOQwrkgw5DCvMORwpbDkcKBw5HCj8ORwobDkcKMIChQYWdlRG93biknLFxuICBwcmV2aW91c1llYXI6ICfDkMKfw5DCvsOQwr/DkMK1w5HCgMOQwrXDkMK0w5DCvcORwpbDkMK5IMORwoDDkcKWw5DCuiAoQ29udHJvbCArIGxlZnQpJyxcbiAgbmV4dFllYXI6ICfDkMKdw5DCsMORwoHDkcKCw5HCg8OQwr/DkMK9w5DCuMOQwrkgw5HCgMORwpbDkMK6IChDb250cm9sICsgcmlnaHQpJyxcbiAgcHJldmlvdXNEZWNhZGU6ICfDkMKfw5DCvsOQwr/DkMK1w5HCgMOQwrXDkMK0w5DCvcORwpQgw5DCtMOQwrXDkcKBw5HCj8ORwoLDkMK4w5HCgMORwpbDkcKHw5HCh8ORwo8nLFxuICBuZXh0RGVjYWRlOiAnw5DCncOQwrDDkcKBw5HCgsORwoPDkMK/w5DCvcOQwrUgw5DCtMOQwrXDkcKBw5HCj8ORwoLDkMK4w5HCgMORwpbDkcKHw5HCh8ORwo8nLFxuICBwcmV2aW91c0NlbnR1cnk6ICfDkMKfw5DCvsOQwr/DkMK1w5HCgMOQwrXDkMK0w5DCvcORwpQgw5HCgcORwoLDkMK+w5DCu8ORwpbDkcKCw5HCgsORwo8nLFxuICBuZXh0Q2VudHVyeTogJ8OQwp3DkMKww5HCgcORwoLDkcKDw5DCv8OQwr3DkMK1IMORwoHDkcKCw5DCvsOQwrvDkcKWw5HCgsORwoLDkcKPJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnw5DCnsOQwrHDkMK1w5HCgMORwpbDkcKCw5HCjCDDkcKHw5DCsMORwoEnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyTG9jYWxlIGZyb20gJy4uL2NhbGVuZGFyL3VrX1VBJztcbmltcG9ydCBUaW1lUGlja2VyTG9jYWxlIGZyb20gJy4uL3RpbWUtcGlja2VyL3VrX1VBJztcblxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICfDkMKew5DCscOQwrXDkcKAw5HClsORwoLDkcKMIMOQwrTDkMKww5HCgsORwoMnLFxuICAgIHJhbmdlUGxhY2Vob2xkZXI6IFsnw5DCn8OQwr7DkcKHw5DCsMORwoLDkMK6w5DCvsOQwrLDkMKwIMOQwrTDkMKww5HCgsOQwrAnLCAnw5DCmsORwpbDkMK9w5HChsOQwrXDkMKyw5DCsCDDkMK0w5DCsMORwoLDkMKwJ10sXG4gICAgLi4uQ2FsZW5kYXJMb2NhbGVcbiAgfSxcbiAgdGltZVBpY2tlckxvY2FsZToge1xuICAgIC4uLlRpbWVQaWNrZXJMb2NhbGVcbiAgfVxufTtcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICcvIMORwoHDkcKCw5DCvsORwoDDkcKWw5DCvcORwobDkcKWJyxcbiAganVtcF90bzogJ8OQwp/DkMK1w5HCgMOQwrXDkMK5w5HCgsOQwrgnLFxuICBqdW1wX3RvX2NvbmZpcm06ICfDkMK/w5HClsOQwrTDkcKCw5DCssOQwrXDkcKAw5DCtMOQwrjDkcKCw5DCuCcsXG4gIHBhZ2U6ICcnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ8OQwp/DkMK+w5DCv8OQwrXDkcKAw5DCtcOQwrTDkMK9w5HCjyDDkcKBw5HCgsOQwr7DkcKAw5HClsOQwr3DkMK6w5DCsCcsXG4gIG5leHRfcGFnZTogJ8OQwp3DkMKww5HCgcORwoLDkcKDw5DCv8OQwr3DkMKwIMORwoHDkcKCw5DCvsORwoDDkcKWw5DCvcOQwrrDkMKwJyxcbiAgcHJldl81OiAnw5DCn8OQwr7DkMK/w5DCtcORwoDDkMK1w5DCtMOQwr3DkcKWIDUgw5HCgcORwoLDkMK+w5HCgMORwpbDkMK9w5DCvsOQwronLFxuICBuZXh0XzU6ICfDkMKdw5DCsMORwoHDkcKCw5HCg8OQwr/DkMK9w5HCliA1IMORwoHDkcKCw5DCvsORwoDDkcKWw5DCvcOQwr7DkMK6JyxcbiAgcHJldl8zOiAnw5DCn8OQwr7DkMK/w5DCtcORwoDDkMK1w5DCtMOQwr3DkcKWIDMgw5HCgcORwoLDkMK+w5HCgMORwpbDkMK9w5DCusOQwrgnLFxuICBuZXh0XzM6ICfDkMKdw5DCsMORwoHDkcKCw5HCg8OQwr/DkMK9w5HCliAzIMORwoHDkcKCw5DCvsORwoDDkcKWw5DCvcOQwrrDkMK4J1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXIgZnJvbSAnLi9jYWxlbmRhci91a19VQSc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL2RhdGUtcGlja2VyL3VrX1VBJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJy4vcGFnaW5hdGlvbi91a19VQSc7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tICcuL3RpbWUtcGlja2VyL3VrX1VBJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICd1aycsXG4gIFBhZ2luYXRpb24sXG4gIERhdGVQaWNrZXIsXG4gIFRpbWVQaWNrZXIsXG4gIENhbGVuZGFyLFxuICBUYWJsZToge1xuICAgIGZpbHRlclRpdGxlOiAnw5DCpMORwpbDkMK7w5HCjMORwoLDkcKAw5HCg8OQwrLDkMKww5HCgsOQwrgnLFxuICAgIGZpbHRlckNvbmZpcm06ICdPSycsXG4gICAgZmlsdGVyUmVzZXQ6ICfDkMKhw5DCusOQwrjDkMK9w5HCg8ORwoLDkMK4JyxcbiAgICBzZWxlY3RBbGw6ICfDkMKew5DCscORwoDDkMKww5HCgsOQwrggw5DCssORwoHDkcKWJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICfDkMKGw5DCvcOQwrLDkMK1w5HCgMORwoLDkcKDw5DCssOQwrDDkcKCw5DCuCDDkMKyw5DCuMOQwrHDkcKWw5HCgCdcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICfDkMKTw5DCsMORwoDDkMKww5DCt8OQwrQnLFxuICAgIGNhbmNlbFRleHQ6ICfDkMKhw5DCusOQwrDDkcKBw5HCg8OQwrLDkMKww5HCgsOQwrgnLFxuICAgIGp1c3RPa1RleHQ6ICfDkMKTw5DCsMORwoDDkMKww5DCt8OQwrQnXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICfDkMKTw5DCsMORwoDDkMKww5DCt8OQwrQnLFxuICAgIGNhbmNlbFRleHQ6ICfDkMKhw5DCusOQwrDDkcKBw5HCg8OQwrLDkMKww5HCgsOQwrgnXG4gIH0sXG4gIFRyYW5zZmVyOiB7XG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICfDkMKSw5DCssOQwrXDkMK0w5HClsORwoLDkcKMIMORwoLDkMK1w5DCusORwoHDkcKCIMOQwrTDkMK7w5HCjyDDkMK/w5DCvsORwojDkcKDw5DCusORwoMnLFxuICAgIGl0ZW1Vbml0OiAnaXRlbScsXG4gICAgaXRlbXNVbml0OiAnaXRlbXMnXG4gIH0sXG4gIFVwbG9hZDoge1xuICAgIHVwbG9hZGluZzogJ8OQwpfDkMKww5DCssOQwrDDkMK9w5HCgsOQwrDDkMK2w5DCtcOQwr3DkMK9w5HCjyAuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICfDkMKSw5DCuMOQwrTDkMKww5DCu8OQwrjDkcKCw5DCuCDDkcKEw5DCsMOQwrnDkMK7JyxcbiAgICB1cGxvYWRFcnJvcjogJ8OQwp/DkMK+w5DCvMOQwrjDkMK7w5DCusOQwrAgw5DCt8OQwrDDkMKyw5DCsMOQwr3DkcKCw5DCsMOQwrbDkMK1w5DCvcOQwr3DkcKPJyxcbiAgICBwcmV2aWV3RmlsZTogJ8OQwp/DkMK+w5DCv8OQwrXDkcKAw5DCtcOQwrTDkMK9w5HClsOQwrkgw5DCv8OQwrXDkcKAw5DCtcOQwrPDkMK7w5HCj8OQwrQgw5HChMOQwrDDkMK5w5DCu8ORwoMnXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICfDkMKUw5DCsMOQwr3DkMK4w5HChSDDkMK9w5DCtcOQwrzDkMKww5HClCdcbiAgfVxufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgQ2FsZW5kYXJMb2NhbGUgZnJvbSAnLi4vY2FsZW5kYXIvZW5fVVMnO1xuaW1wb3J0IFRpbWVQaWNrZXJMb2NhbGUgZnJvbSAnLi4vdGltZS1waWNrZXIvZW5fVVMnO1xuXG4vLyBNZXJnZSBpbnRvIGEgbG9jYWxlIG9iamVjdFxuY29uc3QgbG9jYWxlID0ge1xuICBsYW5nOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdDaMOhwrvCjW4gdGjDocK7wp1pIMOEwpFpw6HCu8KDbScsXG4gICAgcmFuZ2VQbGFjZWhvbGRlcjogWydOZ8ODwqB5IGLDocK6wq90IMOEwpHDocK6wqd1JywgJ05nw4PCoHkga8OhwrrCv3QgdGjDg8K6YyddLFxuICAgIC4uLkNhbGVuZGFyTG9jYWxlXG4gIH0sXG4gIHRpbWVQaWNrZXJMb2NhbGU6IHtcbiAgICAuLi5UaW1lUGlja2VyTG9jYWxlXG4gIH1cbn07XG5cbi8vIEFsbCBzZXR0aW5ncyBhdDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vYmxvYi9tYXN0ZXIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9sb2NhbGUvZXhhbXBsZS5qc29uXG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIE9wdGlvbnMuanN4XG4gIGl0ZW1zX3Blcl9wYWdlOiAnLyB0cmFuZycsXG4gIGp1bXBfdG86ICfDhMKQw6HCusK/bicsXG4gIGp1bXBfdG9fY29uZmlybTogJ3jDg8KhYyBuaMOhwrrCrW4nLFxuICBwYWdlOiAnJyxcblxuICAvLyBQYWdpbmF0aW9uLmpzeFxuICBwcmV2X3BhZ2U6ICdUcmFuZyBUcsOGwrDDocK7wptjJyxcbiAgbmV4dF9wYWdlOiAnVHJhbmcgS8OhwrrCvycsXG4gIHByZXZfNTogJ1bDocK7woEgNSBUcmFuZyBUcsOGwrDDocK7wptjJyxcbiAgbmV4dF81OiAnw4TCkMOhwrrCv24gNSBUcmFuZyBLw6HCusK/JyxcbiAgcHJldl8zOiAnVsOhwrvCgSAzIFRyYW5nIFRyw4bCsMOhwrvCm2MnLFxuICBuZXh0XzM6ICfDhMKQw6HCusK/biAzIFRyYW5nIEvDocK6wr8nXG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgcGxhY2Vob2xkZXI6ICdDaMOhwrvCjW4gdGjDocK7wp1pIGdpYW4nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvdmlfVk4nO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci92aV9WTic7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vdmlfVk4nO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci92aV9WTic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAndmknLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ0LDocK7wpkgJyxcbiAgICBmaWx0ZXJDb25maXJtOiAnT0snLFxuICAgIGZpbHRlclJlc2V0OiAnVMOhwrrCoW8gTMOhwrrCoWknLFxuICAgIHNlbGVjdEFsbDogJ0Now6HCu8KNbiBUw6HCusKldCBDw6HCusKjJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICdDaMOhwrvCjW4gTmfDhsKww6HCu8KjYyBMw6HCusKhaSdcbiAgfSxcbiAgTW9kYWw6IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0h1w6HCu8K3JyxcbiAgICBqdXN0T2tUZXh0OiAnT0snXG4gIH0sXG4gIFBvcGNvbmZpcm06IHtcbiAgICBva1RleHQ6ICdPSycsXG4gICAgY2FuY2VsVGV4dDogJ0h1w6HCu8K3J1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnVMODwqxtIMOhwrvCnyDDhMKRw4PConknLFxuICAgIGl0ZW1Vbml0OiAnbcOhwrvCpWMnLFxuICAgIGl0ZW1zVW5pdDogJ23DocK7wqVjJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDhMKQYW5nIHTDocK6wqNpIGzDg8Kqbi4uLicsXG4gICAgcmVtb3ZlRmlsZTogJ0fDocK7wqEgYsOhwrvCjyB0w6HCusKtcCB0aW4nLFxuICAgIHVwbG9hZEVycm9yOiAnTMOhwrvCl2kgdMOhwrrCo2kgbMODwqpuJyxcbiAgICBwcmV2aWV3RmlsZTogJ1hlbSB0aMOhwrvCrSB0w6HCusKtcCB0aW4nXG4gIH0sXG4gIEVtcHR5OiB7XG4gICAgZGVzY3JpcHRpb246ICdUcsOhwrvCkW5nJ1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9kYXk6ICfDpMK7worDpcKkwqknLFxuICBub3c6ICfDpsKtwqTDpcKIwrsnLFxuICBiYWNrVG9Ub2RheTogJ8Oowr/ClMOlwpvCnsOkwrvCisOlwqTCqScsXG4gIG9rOiAnw6fCosK6w6XCrsKaJyxcbiAgdGltZVNlbGVjdDogJ8OpwoHCuMOmwpPCh8OmwpnCgsOpwpbCkycsXG4gIGRhdGVTZWxlY3Q6ICfDqcKBwrjDpsKTwofDpsKXwqXDpsKcwp8nLFxuICBjbGVhcjogJ8OmwrjChcOpwpnCpCcsXG4gIG1vbnRoOiAnw6bCnMKIJyxcbiAgeWVhcjogJ8OlwrnCtCcsXG4gIHByZXZpb3VzTW9udGg6ICfDpMK4worDpcKAwovDpsKcwoggKMOnwr/Cu8OpwqDCgcOkwrjCisOpwo3CtSknLFxuICBuZXh0TW9udGg6ICfDpMK4wovDpcKAwovDpsKcwoggKMOnwr/Cu8OpwqDCgcOkwrjCi8Opwo3CtSknLFxuICBtb250aFNlbGVjdDogJ8OpwoHCuMOmwpPCh8OmwpzCiMOkwrvCvScsXG4gIHllYXJTZWxlY3Q6ICfDqcKBwrjDpsKTwofDpcK5wrTDpMK7wr0nLFxuICBkZWNhZGVTZWxlY3Q6ICfDqcKBwrjDpsKTwofDpcK5wrTDpMK7wqMnLFxuICB5ZWFyRm9ybWF0OiAnWVlZWcOlwrnCtCcsXG4gIGRheUZvcm1hdDogJ0TDpsKXwqUnLFxuICBkYXRlRm9ybWF0OiAnWVlZWcOlwrnCtE3DpsKcwohEw6bCl8KlJyxcbiAgZGF0ZVRpbWVGb3JtYXQ6ICdZWVlZw6XCucK0TcOmwpzCiETDpsKXwqUgSEjDpsKZwoJtbcOlwojChnNzw6fCp8KSJyxcbiAgcHJldmlvdXNZZWFyOiAnw6TCuMKKw6TCuMKAw6XCucK0IChDb250cm9sw6nCjcK1w6XCisKgw6XCt8Kmw6bClsK5w6XCkMKRw6nCjcK1KScsXG4gIG5leHRZZWFyOiAnw6TCuMKLw6TCuMKAw6XCucK0IChDb250cm9sw6nCjcK1w6XCisKgw6XCj8Kzw6bClsK5w6XCkMKRw6nCjcK1KScsXG4gIHByZXZpb3VzRGVjYWRlOiAnw6TCuMKKw6TCuMKAw6XCucK0w6TCu8KjJyxcbiAgbmV4dERlY2FkZTogJ8OkwrjCi8OkwrjCgMOlwrnCtMOkwrvCoycsXG4gIHByZXZpb3VzQ2VudHVyeTogJ8OkwrjCisOkwrjCgMOkwrjClsOnwrTCgCcsXG4gIG5leHRDZW50dXJ5OiAnw6TCuMKLw6TCuMKAw6TCuMKWw6fCtMKAJ1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5jb25zdCBsb2NhbGUgPSB7XG4gIHBsYWNlaG9sZGVyOiAnw6jCq8KLw6nCgcK4w6bCk8KHw6bCmcKCw6nClsKTJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCBDYWxlbmRhckxvY2FsZSBmcm9tICcuLi9jYWxlbmRhci96aF9UVyc7XG5pbXBvcnQgVGltZVBpY2tlckxvY2FsZSBmcm9tICcuLi90aW1lLXBpY2tlci96aF9UVyc7XG5cbmNvbnN0IGxvY2FsZSA9IHtcbiAgbGFuZzoge1xuICAgIHBsYWNlaG9sZGVyOiAnw6jCq8KLw6nCgcK4w6bCk8KHw6bCl8Klw6bCnMKfJyxcbiAgICByYW5nZVBsYWNlaG9sZGVyOiBbJ8OpwpbCi8OlwqfCi8OmwpfCpcOmwpzCnycsICfDp8K1wpDDpsKdwp/DpsKXwqXDpsKcwp8nXSxcbiAgICAuLi5DYWxlbmRhckxvY2FsZVxuICB9LFxuICB0aW1lUGlja2VyTG9jYWxlOiB7XG4gICAgLi4uVGltZVBpY2tlckxvY2FsZVxuICB9XG59O1xuXG5sb2NhbGUubGFuZy5vayA9ICfDp8Kiwrogw6XCrsKaJztcblxuLy8gQWxsIHNldHRpbmdzIGF0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9ibG9iL21hc3Rlci9jb21wb25lbnRzL2RhdGUtcGlja2VyL2xvY2FsZS9leGFtcGxlLmpzb25cblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gT3B0aW9ucy5qc3hcbiAgaXRlbXNfcGVyX3BhZ2U6ICfDpsKiwp0vw6nCoMKBJyxcbiAganVtcF90bzogJ8OowrfCs8OowofCsycsXG4gIGp1bXBfdG9fY29uZmlybTogJ8OnwqLCusOlwq7CmicsXG4gIHBhZ2U6ICfDqcKgwoEnLFxuXG4gIC8vIFBhZ2luYXRpb24uanN4XG4gIHByZXZfcGFnZTogJ8OkwrjCisOkwrjCgMOpwqDCgScsXG4gIG5leHRfcGFnZTogJ8OkwrjCi8OkwrjCgMOpwqDCgScsXG4gIHByZXZfNTogJ8OlwpDCkcOlwonCjSA1IMOpwqDCgScsXG4gIG5leHRfNTogJ8OlwpDCkcOlwr7CjCA1IMOpwqDCgScsXG4gIHByZXZfMzogJ8OlwpDCkcOlwonCjSAzIMOpwqDCgScsXG4gIG5leHRfMzogJ8OlwpDCkcOlwr7CjCAzIMOpwqDCgSdcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IENhbGVuZGFyIGZyb20gJy4vY2FsZW5kYXIvemhfVFcnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9kYXRlLXBpY2tlci96aF9UVyc7XG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24vemhfVFcnO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi90aW1lLXBpY2tlci96aF9UVyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbG9jYWxlOiAnemgtdHcnLFxuICBQYWdpbmF0aW9uLFxuICBEYXRlUGlja2VyLFxuICBUaW1lUGlja2VyLFxuICBDYWxlbmRhcixcbiAgVGFibGU6IHtcbiAgICBmaWx0ZXJUaXRsZTogJ8Onwq/CqcOpwoHCuMOlwpnCqCcsXG4gICAgZmlsdGVyQ29uZmlybTogJ8OnwqLCuiDDpcKuwponLFxuICAgIGZpbHRlclJlc2V0OiAnw6nCh8KNIMOnwr3CricsXG4gICAgc2VsZWN0QWxsOiAnw6XChcKow6nCg8Kow6nCgcK4w6XCj8KWJyxcbiAgICBzZWxlY3RJbnZlcnQ6ICfDpcKPwo3DpcKQwpHDqcKBwrjDpcKPwpYnXG4gIH0sXG4gIE1vZGFsOiB7XG4gICAgb2tUZXh0OiAnw6fCosK6IMOlwq7CmicsXG4gICAgY2FuY2VsVGV4dDogJ8Olwo/CliDDpsK2wognLFxuICAgIGp1c3RPa1RleHQ6ICdPSydcbiAgfSxcbiAgUG9wY29uZmlybToge1xuICAgIG9rVGV4dDogJ8OnwqLCuiDDpcKuwponLFxuICAgIGNhbmNlbFRleHQ6ICfDpcKPwpYgw6bCtsKIJ1xuICB9LFxuICBUcmFuc2Zlcjoge1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnw6bCkMKcw6XCsMKLw6jCs8KHw6bClsKZJyxcbiAgICBpdGVtVW5pdDogJ8OpwqDChcOnwpvCricsXG4gICAgaXRlbXNVbml0OiAnw6nCoMKFw6fCm8KuJ1xuICB9LFxuICBVcGxvYWQ6IHtcbiAgICB1cGxvYWRpbmc6ICfDpsKtwqPDpcKcwqjDpMK4worDpcKCwrMuLi4nLFxuICAgIHJlbW92ZUZpbGU6ICfDpcKIwqrDqcKZwqTDpsKqwpTDpsKhwognLFxuICAgIHVwbG9hZEVycm9yOiAnw6TCuMKKw6XCgsKzw6XCpMKxw6bClcKXJyxcbiAgICBwcmV2aWV3RmlsZTogJ8OmwqrClMOmwqHCiMOpwqDCkMOowqbCvSdcbiAgfSxcbiAgRW1wdHk6IHtcbiAgICBkZXNjcmlwdGlvbjogJ8OnwoTCocOmwq3CpMOowrPCh8OmwpbCmSdcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJsb2NhbGUiLCJUaW1lUGlja2VyTG9jYWxlIiwiSW5qZWN0aW9uVG9rZW4iLCJCZWhhdmlvclN1YmplY3QiLCJJbmplY3RhYmxlIiwiT3B0aW9uYWwiLCJJbmplY3QiLCJQaXBlIiwiTmdNb2R1bGUiLCJMb2dnZXJNb2R1bGUiLCJEYXRlUGlwZSIsIkluamVjdG9yIiwidHNsaWJfMS5fX2V4dGVuZHMiLCJDYWxlbmRhckxvY2FsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEseUJBQWU7UUFDYixLQUFLLEVBQUUsSUFBSTtRQUNYLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLE1BQU07UUFDbkIsRUFBRSxFQUFFLElBQUk7UUFDUixVQUFVLEVBQUUsTUFBTTtRQUNsQixVQUFVLEVBQUUsTUFBTTtRQUNsQixLQUFLLEVBQUUsSUFBSTtRQUNYLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLEdBQUc7UUFDVCxhQUFhLEVBQUUsWUFBWTtRQUMzQixTQUFTLEVBQUUsWUFBWTtRQUN2QixXQUFXLEVBQUUsTUFBTTtRQUNuQixVQUFVLEVBQUUsTUFBTTtRQUNsQixZQUFZLEVBQUUsTUFBTTtRQUNwQixVQUFVLEVBQUUsT0FBTztRQUNuQixTQUFTLEVBQUUsSUFBSTtRQUNmLFVBQVUsRUFBRSxXQUFXO1FBQ3ZCLGNBQWMsRUFBRSxxQkFBcUI7UUFDckMsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLGNBQWMsRUFBRSxNQUFNO1FBQ3RCLFVBQVUsRUFB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