nuxeo-development-framework 5.4.5 → 5.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nuxeo-development-framework.umd.js +688 -384
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
- package/esm2015/lib/components/ndf-config-editor/services/dummy-data.js +2 -2
- package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +3 -17
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +62 -16
- package/esm2015/lib/components/ndf-filters/custom-components/index.js +2 -1
- package/esm2015/lib/components/ndf-filters/models/base-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +8 -9
- package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +3 -3
- package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +6 -1
- package/esm2015/lib/components/ndf-tabs/component/ndf-tabs.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/base/base-custom-report.js +41 -0
- package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +3 -2
- package/esm2015/lib/components/reports/ndf-reports/base/index.js +5 -0
- package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.js +49 -0
- package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/constants/charts-types.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +5 -2
- package/esm2015/lib/components/reports/ndf-reports/models/base.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/custom-definition.js +2 -0
- package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/graph-definition.js +2 -0
- package/esm2015/lib/components/reports/ndf-reports/models/index.js +3 -2
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +4 -3
- package/esm2015/lib/components/reports/ndf-reports/services/custom-reports-registry.service.js +132 -0
- package/esm2015/lib/components/reports/ndf-reports/services/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +8 -1
- package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +4 -3
- package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +32 -8
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo.dialog.js +7 -6
- package/esm2015/lib/shared/evaluator/evaluator.js +3 -2
- package/esm2015/lib/shared/evaluator/types.js +1 -1
- package/fesm2015/nuxeo-development-framework.js +644 -358
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.d.ts +0 -7
- package/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.d.ts +10 -3
- package/lib/components/ndf-filters/custom-components/index.d.ts +1 -0
- package/lib/components/ndf-filters/models/base-field-config.d.ts +2 -2
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +60 -60
- package/lib/components/ndf-filters/pipes/check-condition.pipe.d.ts +1 -1
- package/lib/components/ndf-filters/services/dynamic-component-loader.service.d.ts +1 -0
- package/lib/components/reports/ndf-reports/base/base-custom-report.d.ts +38 -0
- package/lib/components/reports/ndf-reports/base/index.d.ts +4 -0
- package/lib/components/reports/ndf-reports/components/_parts/report-actions/report-actions.component.d.ts +1 -0
- package/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.d.ts +14 -0
- package/lib/components/reports/ndf-reports/components/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/constants/charts-types.d.ts +1 -0
- package/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.d.ts +1 -0
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +1 -0
- package/lib/components/reports/ndf-reports/models/base.d.ts +6 -4
- package/lib/components/reports/ndf-reports/models/custom-definition.d.ts +11 -0
- package/lib/components/reports/ndf-reports/models/details.d.ts +6 -1
- package/lib/components/reports/ndf-reports/models/dialog-data.d.ts +1 -1
- package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +1 -1
- package/lib/components/reports/ndf-reports/models/index.d.ts +2 -1
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +3 -0
- package/lib/components/reports/ndf-reports/models/report-config.d.ts +3 -2
- package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +21 -20
- package/lib/components/reports/ndf-reports/services/custom-reports-registry.service.d.ts +83 -0
- package/lib/components/reports/ndf-reports/services/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +6 -1
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +5 -1
- package/lib/components/tables/ndf-table/models/table-config.d.ts +5 -0
- package/lib/shared/evaluator/types.d.ts +3 -1
- package/package.json +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/graph.js +0 -2
- /package/lib/components/reports/ndf-reports/models/{graph.d.ts → graph-definition.d.ts} +0 -0
|
@@ -25,7 +25,8 @@ function createSecureContext() {
|
|
|
25
25
|
// Prevent access to window
|
|
26
26
|
window: undefined,
|
|
27
27
|
self: undefined,
|
|
28
|
-
globalThis: undefined
|
|
28
|
+
globalThis: undefined,
|
|
29
|
+
_: _ // Include lodash if needed, but ensure it's used safely
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
/**
|
|
@@ -314,4 +315,4 @@ Evaluator.templateSettings = {
|
|
|
314
315
|
evaluate: /\{%([\s\S]+?)%\}/g,
|
|
315
316
|
escape: /\{\{\{([\s\S]+?)\}\}\}/g
|
|
316
317
|
};
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL2V2YWx1YXRvci9ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUlyQzs7O0dBR0c7QUFDSCxTQUFTLG1CQUFtQjtJQUMzQixvREFBb0Q7SUFDcEQsT0FBTztRQUNOLHNEQUFzRDtRQUN0RCxPQUFPLEVBQUU7WUFDUixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNwQjtRQUNELDZDQUE2QztRQUM3QyxJQUFJO1FBQ0osSUFBSTtRQUNKLE1BQU07UUFDTixNQUFNO1FBQ04sT0FBTztRQUNQLEtBQUs7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLFVBQVUsRUFBRSxTQUFTO0tBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBbUJyQjs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUF1QixFQUFFLEdBQUcsTUFBYTtRQUN6RCw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxJQUNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekIs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QkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE9BQVEsR0FBYSxDQUFDLE9BQU8sQ0FBQzthQUM5QjtTQUNEO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQzs7QUF0VkQ7OztHQUdHO0FBQ0ksZUFBSyxHQUE2QixFQUFFLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSSwwQkFBZ0IsR0FBcUI7SUFDM0MsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixRQUFRLEVBQUUsbUJBQW1CO0lBQzdCLE1BQU0sRUFBRSx5QkFBeUI7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfLCB7IGdldCwga2V5cywgc2V0LCB0cmltLCB2YWx1ZXMgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgc3RyaW5nSGFzaCBmcm9tICdzdHJpbmctaGFzaCc7XHJcblxyXG5pbXBvcnQgeyBFdmFsdWF0b3JPcHRpb25zLCBUZW1wbGF0ZVNldHRpbmdzIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHNlY3VyZSBjb250ZXh0IGZvciBmdW5jdGlvbiBldmFsdWF0aW9uIHRoYXQgcHJldmVudHMgYWNjZXNzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LlxyXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn0gQSBzZWN1cmUgY29udGV4dCBvYmplY3Qgd2l0aCBzYWZlIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTZWN1cmVDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cdC8vIENyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IHdpdGggb25seSBzYWZlIHByb3BlcnRpZXNcclxuXHRyZXR1cm4ge1xyXG5cdFx0Ly8gQWRkIGFueSBzYWZlIGdsb2JhbHMgaGVyZSB0aGF0IHNob3VsZCBiZSBhY2Nlc3NpYmxlXHJcblx0XHRjb25zb2xlOiB7XHJcblx0XHRcdGxvZzogY29uc29sZS5sb2csXHJcblx0XHRcdHdhcm46IGNvbnNvbGUud2FybixcclxuXHRcdFx0ZXJyb3I6IGNvbnNvbGUuZXJyb3JcclxuXHRcdH0sXHJcblx0XHQvLyBBZGQgb3RoZXIgc2FmZSBvYmplY3RzL2Z1bmN0aW9ucyBhcyBuZWVkZWRcclxuXHRcdE1hdGgsXHJcblx0XHREYXRlLFxyXG5cdFx0TnVtYmVyLFxyXG5cdFx0U3RyaW5nLFxyXG5cdFx0Qm9vbGVhbixcclxuXHRcdEFycmF5LFxyXG5cdFx0T2JqZWN0LFxyXG5cdFx0SlNPTixcclxuXHRcdC8vIFByZXZlbnQgYWNjZXNzIHRvIHdpbmRvd1xyXG5cdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHR9O1xyXG59XHJcblxyXG4vKipcclxuICogQSB1dGlsaXR5IGNsYXNzIGZvciBldmFsdWF0aW5nIGV4cHJlc3Npb25zLCBpbnRlcnBvbGF0aW5nIHN0cmluZ3MsIGFuZCB3b3JraW5nIHdpdGggdGVtcGxhdGVzLlxyXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIGZvciBkeW5hbWljIGV2YWx1YXRpb24gb2YgY29kZSwgc3RyaW5nIGludGVycG9sYXRpb24sXHJcbiAqIGFuZCB0ZW1wbGF0ZSBwcm9jZXNzaW5nIHdpdGggY2FjaGluZyBjYXBhYmlsaXRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXZhbHVhdG9yIHtcclxuXHQvKipcclxuXHQgKiBDYWNoZSBmb3Igc3RvcmluZyBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbnMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS5cclxuXHQgKiBLZXlzIGFyZSBzdHJpbmcgaGFzaGVzIG9mIHRoZSB0ZW1wbGF0ZSwgdmFsdWVzIGFyZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25zLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBjYWNoZTogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRpbmdzIGZvciB0ZW1wbGF0ZSBwcm9jZXNzaW5nLCBkZWZpbmluZyByZWdleCBwYXR0ZXJucyBmb3IgZGlmZmVyZW50IHRlbXBsYXRlIG9wZXJhdGlvbnMuXHJcblx0ICogLSBpbnRlcnBvbGF0ZTogUGF0dGVybiBmb3IgdmFyaWFibGUgaW50ZXJwb2xhdGlvbiAoe3sgdmFyaWFibGUgfX0pXHJcblx0ICogLSBldmFsdWF0ZTogUGF0dGVybiBmb3IgY29kZSBldmFsdWF0aW9uICh7JSBjb2RlICV9KVxyXG5cdCAqIC0gZXNjYXBlOiBQYXR0ZXJuIGZvciBIVE1MIGVzY2FwaW5nICh7e3sgdmFyaWFibGUgfX19KVxyXG5cdCAqL1xyXG5cdHN0YXRpYyB0ZW1wbGF0ZVNldHRpbmdzOiBUZW1wbGF0ZVNldHRpbmdzID0ge1xyXG5cdFx0aW50ZXJwb2xhdGU6IC97eyhbXFxzXFxTXSs/KX19L2csXHJcblx0XHRldmFsdWF0ZTogL1xceyUoW1xcc1xcU10rPyklXFx9L2csXHJcblx0XHRlc2NhcGU6IC9cXHtcXHtcXHsoW1xcc1xcU10rPylcXH1cXH1cXH0vZ1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIGEgc3RyaW5nIG9yIHJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGFscmVhZHkgcHJvdmlkZWQuXHJcblx0ICogVXNlcyBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHRoZSB3aW5kb3cgb2JqZWN0IGJ5IGRlZmF1bHQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IGZ1bmMgLSBUaGUgZnVuY3Rpb24gb3Igc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0gey4uLmFueX0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IC0gVGhlIHJlc3VsdGluZyBmdW5jdGlvbi5cclxuXHQgKi9cclxuXHRzdGF0aWMgZXZhbHVhdG9yKGZ1bmM6IHN0cmluZyB8IEZ1bmN0aW9uLCAuLi5wYXJhbXM6IGFueVtdKTogRnVuY3Rpb24ge1xyXG5cdFx0Ly8gRXh0cmFjdCBvcHRpb25zIGlmIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBhbiBvcHRpb25zIG9iamVjdFxyXG5cdFx0bGV0IG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fTtcclxuXHRcdGlmIChcclxuXHRcdFx0cGFyYW1zLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0cGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSAmJlxyXG5cdFx0XHR0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ29iamVjdCcgJiZcclxuXHRcdFx0J3NlY3VyaXR5TW9kZScgaW4gcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXVxyXG5cdFx0KSB7XHJcblx0XHRcdG9wdGlvbnMgPSBwYXJhbXMucG9wKCkgYXMgRXZhbHVhdG9yT3B0aW9ucztcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0cmV0dXJuIGZ1bmM7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXNbMF0gPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdHBhcmFtcyA9IGtleXMocGFyYW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIHNlY3VyZSBtb2RlIChkZWZhdWx0KSBvciB1bnNhZmUgbW9kZVxyXG5cdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0aWYgKHNlY3VyaXR5TW9kZSA9PT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0Ly8gSW4gdW5zYWZlIG1vZGUsIGNyZWF0ZSBhIGZ1bmN0aW9uIHdpdGggYWNjZXNzIHRvIGFsbCBnbG9iYWxzXHJcblx0XHRcdHJldHVybiBuZXcgRnVuY3Rpb24oLi4ucGFyYW1zLCBmdW5jIGFzIHN0cmluZyk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBzYW5kYm94ID0gY3JlYXRlU2VjdXJlQ29udGV4dCgpO1xyXG5cdFx0Y29uc3Qgc2FuZGJveEtleXMgPSBPYmplY3Qua2V5cyhzYW5kYm94KTtcclxuXHRcdGNvbnN0IHNhbmRib3hBc3NpZ25tZW50cyA9IHNhbmRib3hLZXlzLm1hcCgoa2V5KSA9PiBgY29uc3QgJHtrZXl9ID0gc2FuZGJveC4ke2tleX07YCkuam9pbignJyk7XHJcblxyXG5cdFx0Y29uc3Qgd3JhcHBlciA9IG5ldyBGdW5jdGlvbiguLi5wYXJhbXMsICdzYW5kYm94JywgYCR7c2FuZGJveEFzc2lnbm1lbnRzfSR7ZnVuYyBhcyBzdHJpbmd9YCk7XHJcblxyXG5cdFx0cmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gd3JhcHBlciguLi5hcmdzLCBzYW5kYm94KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcGxhY2VzIHRlbXBsYXRlIGV4cHJlc3Npb25zIGluIGEgc3RyaW5nIHdpdGggdmFsdWVzIGZyb20gZGF0YS5cclxuXHQgKiBTdXBwb3J0cyBmdW5jdGlvbiBjYWxscyB3aXRoaW4gdGVtcGxhdGVzIGFuZCBmYWxsYmFjayB2YWx1ZXMgdXNpbmcgfHwgc3ludGF4LlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgZXZhbHVhdGlvbiBoYXBwZW5zIGluIGEgc2VjdXJlIGNvbnRleHQgdG8gcHJldmVudCBhY2Nlc3MgdG8gd2luZG93IG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmF3VGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgc3RyaW5nIGNvbnRhaW5pbmcgZXhwcmVzc2lvbnMgdG8gaW50ZXJwb2xhdGUuXHJcblx0ICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgdmFsdWVzIHRvIHVzZSBmb3IgaW50ZXJwb2xhdGlvbi5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnN9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnRlcnBvbGF0aW9uIHByb2Nlc3MuXHJcblx0ICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgaW50ZXJwb2xhdGVkIHN0cmluZyB3aXRoIGFsbCBleHByZXNzaW9ucyByZXBsYWNlZCB3aXRoIGFjdHVhbCB2YWx1ZXMuXHJcblx0ICovXHJcblx0c3RhdGljIGludGVycG9sYXRlU3RyaW5nKHJhd1RlbXBsYXRlOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXJhd1RlbXBsYXRlKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGlmICh0eXBlb2YgcmF3VGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybiAocmF3VGVtcGxhdGUgYXMgYW55KS50b1N0cmluZygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugc2VjdXJlIG1vZGUgKGRlZmF1bHQpIG9yIHVuc2FmZSBtb2RlXHJcblx0XHRjb25zdCBzZWN1cml0eU1vZGUgPSBvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJztcclxuXHJcblx0XHQvLyBDcmVhdGUgYSBzZWN1cmUgZGF0YSBvYmplY3QgaWYgbmVlZGVkXHJcblx0XHRjb25zdCBzZWN1cmVEYXRhID1cclxuXHRcdFx0c2VjdXJpdHlNb2RlID09PSAndW5zYWZlJ1xyXG5cdFx0XHRcdD8gZGF0YVxyXG5cdFx0XHRcdDoge1xyXG5cdFx0XHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0XHRcdC4uLmRhdGEsXHJcblx0XHRcdFx0XHRcdC8vIEVuc3VyZSB0aGVzZSByZW1haW4gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0fTtcclxuXHJcblx0XHRyZXR1cm4gcmF3VGVtcGxhdGUucmVwbGFjZSgvKHt7XFxzKiguKj8pXFxzKn19KS9nLCAobWF0Y2g6IHN0cmluZywgJDE6IHN0cmluZywgZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGlmIChleHByZXNzaW9uLmluZGV4T2YoJygnKSAhPT0gLTEpIHtcclxuXHRcdFx0XHRyZXR1cm4gZXhwcmVzc2lvbi5yZXBsYWNlKC8oW14oXSspXFwoKFteKV0rKVxccypcXCk7Py8sIChfOiBzdHJpbmcsIGZuTmFtZTogc3RyaW5nLCBhcmdzU3RyOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdGZuTmFtZSA9IHRyaW0oZm5OYW1lKTtcclxuXHRcdFx0XHRcdGNvbnN0IGZ1bmMgPSBnZXQoc2VjdXJlRGF0YSwgZm5OYW1lKTtcclxuXHJcblx0XHRcdFx0XHRpZiAoZnVuYykge1xyXG5cdFx0XHRcdFx0XHRpZiAoYXJnc1N0cikge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFyZ3MgPSBhcmdzU3RyLnNwbGl0KCcsJykubWFwKChhcmc6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdHJpbW1lZCA9IHRyaW0oYXJnKTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmICgvXlsnXCJdLy50ZXN0KHRyaW1tZWQpKSByZXR1cm4gdHJpbW1lZC5zbGljZSgxLCAtMSk7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZ2V0KHNlY3VyZURhdGEsIHRyaW1tZWQpO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBFdmFsdWF0b3IuZXZhbHVhdGUoZnVuYywgYXJncywgJycsIGZhbHNlLCBzZWN1cmVEYXRhLCBvcHRpb25zKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gRXZhbHVhdG9yLmV2YWx1YXRlKGZ1bmMsIFtdLCAnJywgZmFsc2UsIHNlY3VyZURhdGEsIG9wdGlvbnMpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxldCBkYXRhUGF0aCA9IGV4cHJlc3Npb247XHJcblx0XHRcdFx0aWYgKGV4cHJlc3Npb24uaW5kZXhPZignPycpICE9PSAtMSkge1xyXG5cdFx0XHRcdFx0ZGF0YVBhdGggPSBleHByZXNzaW9uLnJlcGxhY2UoL1xcP1xcLi9nLCAnLicpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBwYXJ0cyA9IGRhdGFQYXRoLnNwbGl0KCd8fCcpLm1hcCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtLnRyaW0oKSk7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gJyc7XHJcblx0XHRcdFx0bGV0IHBhdGggPSAnJztcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRwYXRoID0gcGFydHNbaV07XHJcblx0XHRcdFx0XHRpZiAoXy5oYXMoc2VjdXJlRGF0YSwgcGF0aCkpIHtcclxuXHRcdFx0XHRcdFx0dmFsdWUgPSBfLmdldChzZWN1cmVEYXRhLCBwYXRoKTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChvcHRpb25zLmRhdGEpIHtcclxuXHRcdFx0XHRcdHNldChvcHRpb25zLmRhdGEsIHBhdGgsIHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBlcmZvcm1zIGFuIGV2YWx1YXRpb24gdXNpbmcgdGhlIGV2YWx1YXRpb24gY29udGV4dCBvZiB0aGlzIGNvbXBvbmVudC5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIGV2YWx1YXRpb24gaGFwcGVucyBpbiBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHdpbmRvdyBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb258b2JqZWN0fSBmdW5jIC0gVGhlIGZ1bmN0aW9uIG9yIHN0cmluZyB0byBldmFsdWF0ZS5cclxuXHQgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmV0IC0gVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHdpdGhpbiB0aGUgZXZhbHVhdGlvbiBjb250ZXh0IHRvIHJldHVybi5cclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGludGVycG9sYXRlIC0gRGV0ZXJtaW5lcyBpZiBpdCBzaG91bGQgcmVwbGFjZSBhbGwge3sgfX0gdG9rZW4gcmVmZXJlbmNlcyB3aXRoIGFjdHVhbCBkYXRhLlxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IC0gICAtIFRoZSBldmFsdWF0aW9uIGNvbnRleHQuXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zIH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGV2YWx1YXRpb24uXHJcblx0ICogQHJldHVybnMgeyp9IC0gVGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKi9cclxuXHRzdGF0aWMgZXZhbHVhdGUoXHJcblx0XHRmdW5jOiBhbnksXHJcblx0XHRhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcblx0XHRyZXQ6IHN0cmluZyA9ICdzaG93JyxcclxuXHRcdGludGVycG9sYXRlOiBib29sZWFuID0gZmFsc2UsXHJcblx0XHRjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcblx0XHRvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge31cclxuXHQpOiBhbnkge1xyXG5cdFx0bGV0IHJldHVyblZhbCA9IG51bGw7XHJcblxyXG5cdFx0Y29uc3QgZmllbGQgPSBhcmdzLmZpZWxkID8gYXJncy5maWVsZCA6IHsga2V5OiAndW5rbm93bicgfTtcclxuXHRcdGNvbnN0IGZpZWxkS2V5ID0gZmllbGQua2V5O1xyXG5cclxuXHRcdGlmICh0eXBlb2YgZnVuYyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0aWYgKHJldCkge1xyXG5cdFx0XHRcdGZ1bmMgPSBgdmFyICR7cmV0fTske2Z1bmN9O3JldHVybiAke3JldH1gO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoaW50ZXJwb2xhdGUpIHtcclxuXHRcdFx0XHRmdW5jID0gRXZhbHVhdG9yLmludGVycG9sYXRlKGZ1bmMsIGFyZ3MsIG9wdGlvbnMpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdC8vIFBhc3MgdGhlIHNlY3VyaXR5IG1vZGUgb3B0aW9uIHRvIHRoZSBldmFsdWF0b3JcclxuXHRcdFx0XHRjb25zdCBldmFsdWF0b3JPcHRpb25zID0geyBzZWN1cml0eU1vZGU6IG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnIH07XHJcblx0XHRcdFx0ZnVuYyA9IEV2YWx1YXRvci5ldmFsdWF0b3IoZnVuYywgYXJncywgY29udGV4dCwgZXZhbHVhdG9yT3B0aW9ucyk7XHJcblx0XHRcdFx0YXJncyA9IEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzIDogdmFsdWVzKGFyZ3MpO1xyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zb2xlLndhcm4oYEFuIGVycm9yIG9jY3VyZWQgd2l0aGluIHRoZSBjdXN0b20gZnVuY3Rpb24gZm9yICR7ZmllbGRLZXl9YCwgZXJyKTtcclxuXHRcdFx0XHRyZXR1cm5WYWwgPSBudWxsO1xyXG5cdFx0XHRcdGZ1bmMgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdHJldHVyblZhbCA9IEV2YWx1YXRvci5leGVjdXRlKGZ1bmMsIGFyZ3MsIGNvbnRleHQsIG9wdGlvbnMpO1xyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRyZXR1cm5WYWwgPSBudWxsO1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybihgQW4gZXJyb3Igb2NjdXJlZCB3aXRoaW4gY3VzdG9tIGZ1bmN0aW9uIGZvciAke2ZpZWxkS2V5fWAsIGVycik7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoZnVuYykge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oYFVua25vd24gZnVuY3Rpb24gdHlwZSBmb3IgJHtmaWVsZEtleX1gKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXR1cm5WYWw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBjb250ZXh0LlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgZXhlY3V0aW9uIGhhcHBlbnMgaW4gYSBzZWN1cmUgY29udGV4dCB0byBwcmV2ZW50IGFjY2VzcyB0byB3aW5kb3cgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgLSBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cclxuXHQgKiBAcGFyYW0ge2FueVtdfFJlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uLCBlaXRoZXIgYXMgYW4gYXJyYXkgb3Igb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW2NvbnRleHQ9e31dIC0gVGhlIGNvbnRleHQgKHRoaXMpIHRvIHVzZSB3aGVuIGV4ZWN1dGluZyB0aGUgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXhlY3V0aW9uLlxyXG5cdCAqIEByZXR1cm5zIHthbnl9IC0gVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gZXhlY3V0aW9uLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBleGVjdXRlKFxyXG5cdFx0ZnVuYzogRnVuY3Rpb24sXHJcblx0XHRhcmdzOiBhbnlbXSB8IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcblx0XHRjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcblx0XHRvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge31cclxuXHQpOiBhbnkge1xyXG5cdFx0Ly8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSBzZWN1cmUgbW9kZSAoZGVmYXVsdCkgb3IgdW5zYWZlIG1vZGVcclxuXHRcdGNvbnN0IHNlY3VyaXR5TW9kZSA9IG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnO1xyXG5cclxuXHRcdGlmIChzZWN1cml0eU1vZGUgPT09ICd1bnNhZmUnKSB7XHJcblx0XHRcdC8vIEluIHVuc2FmZSBtb2RlLCBleGVjdXRlIHdpdGggdGhlIG9yaWdpbmFsIGNvbnRleHRcclxuXHRcdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJncykgPyBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpIDogZnVuYy5jYWxsKGNvbnRleHQsIGFyZ3MpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gSW4gc2VjdXJlIG1vZGUsIGNyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IGJ5IG1lcmdpbmcgdGhlIHByb3ZpZGVkIGNvbnRleHQgd2l0aCBvdXIgc2VjdXJlIGNvbnRleHRcclxuXHRcdFx0Y29uc3Qgc2VjdXJlQ29udGV4dCA9IHtcclxuXHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0Li4uY29udGV4dCxcclxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlc2UgcmVtYWluIHVuZGVmaW5lZCBldmVuIGlmIHRoZXkgd2VyZSBpbiB0aGUgcHJvdmlkZWQgY29udGV4dFxyXG5cdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHRcdFx0fTtcclxuXHJcblx0XHRcdC8vIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHNlY3VyZSBjb250ZXh0XHJcblx0XHRcdHJldHVybiBBcnJheS5pc0FycmF5KGFyZ3MpID8gZnVuYy5hcHBseShzZWN1cmVDb250ZXh0LCBhcmdzKSA6IGZ1bmMuY2FsbChzZWN1cmVDb250ZXh0LCBhcmdzKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSB0ZW1wbGF0ZSBmdW5jdGlvbiBmcm9tIGEgc3RyaW5nIHdpdGggY2FjaGluZyBmb3IgcGVyZm9ybWFuY2UuXHJcblx0ICogQnkgZGVmYXVsdCwgZW5zdXJlcyB0aGUgdGVtcGxhdGUgZnVuY3Rpb24gZXhlY3V0ZXMgaW4gYSBzZWN1cmUgY29udGV4dC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgc3RyaW5nIHRvIGNvbXBpbGUgaW50byBhIGZ1bmN0aW9uLlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbaGFzaF0gLSBPcHRpb25hbCBoYXNoIHRvIHVzZSBhcyBjYWNoZSBrZXkuIElmIG5vdCBwcm92aWRlZCwgYSBoYXNoIHdpbGwgYmUgZ2VuZXJhdGVkIGZyb20gdGhlIHRlbXBsYXRlLlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRlbXBsYXRlLlxyXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbnx1bmRlZmluZWR9IC0gVGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLCBvciB1bmRlZmluZWQgaWYgY29tcGlsYXRpb24gZmFpbHMuXHJcblx0ICovXHJcblx0c3RhdGljIHRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcsIGhhc2g/OiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fSk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcclxuXHRcdGhhc2ggPSBoYXNoIHx8IHN0cmluZ0hhc2godGVtcGxhdGUpLnRvU3RyaW5nKCk7XHJcblxyXG5cdFx0Ly8gSWYgaGFzaCBjb250YWlucyBvcHRpb25zIG9iamVjdCwgZXh0cmFjdCBpdFxyXG5cdFx0aWYgKHR5cGVvZiBoYXNoID09PSAnb2JqZWN0JyAmJiAnc2VjdXJpdHlNb2RlJyBpbiBoYXNoKSB7XHJcblx0XHRcdG9wdGlvbnMgPSBoYXNoIGFzIHVua25vd24gYXMgRXZhbHVhdG9yT3B0aW9ucztcclxuXHRcdFx0aGFzaCA9IHN0cmluZ0hhc2godGVtcGxhdGUpLnRvU3RyaW5nKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGNhY2hlZCB2ZXJzaW9uXHJcblx0XHRjb25zdCBjYWNoZUtleSA9IGhhc2ggKyAob3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZScpO1xyXG5cdFx0aWYgKEV2YWx1YXRvci5jYWNoZVtjYWNoZUtleV0pIHtcclxuXHRcdFx0cmV0dXJuIEV2YWx1YXRvci5jYWNoZVtjYWNoZUtleV07XHJcblx0XHR9XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0dGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKC9jdHhcXC4vZywgJycpO1xyXG5cclxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSB0ZW1wbGF0ZSBmdW5jdGlvbiB1c2luZyBsb2Rhc2hcclxuXHRcdFx0Y29uc3QgdGVtcGxhdGVGdW5jID0gXy50ZW1wbGF0ZSh0ZW1wbGF0ZSwgRXZhbHVhdG9yLnRlbXBsYXRlU2V0dGluZ3MpO1xyXG5cclxuXHRcdFx0Ly8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSBzZWN1cmUgbW9kZSAoZGVmYXVsdCkgb3IgdW5zYWZlIG1vZGVcclxuXHRcdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0XHRpZiAoc2VjdXJpdHlNb2RlID09PSAndW5zYWZlJykge1xyXG5cdFx0XHRcdC8vIEluIHVuc2FmZSBtb2RlLCByZXR1cm4gdGhlIG9yaWdpbmFsIHRlbXBsYXRlIGZ1bmN0aW9uXHJcblx0XHRcdFx0cmV0dXJuIChFdmFsdWF0b3IuY2FjaGVbY2FjaGVLZXldID0gdGVtcGxhdGVGdW5jKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBJbiBzZWN1cmUgbW9kZSwgd3JhcCB0aGUgdGVtcGxhdGUgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgaW4gYSBzZWN1cmUgY29udGV4dFxyXG5cdFx0XHRcdGNvbnN0IHNlY3VyZVRlbXBsYXRlRnVuYyA9IChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IGZvciB0aGUgdGVtcGxhdGVcclxuXHRcdFx0XHRcdGNvbnN0IHNlY3VyZURhdGEgPSB7XHJcblx0XHRcdFx0XHRcdC4uLmNyZWF0ZVNlY3VyZUNvbnRleHQoKSxcclxuXHRcdFx0XHRcdFx0Li4uZGF0YSxcclxuXHRcdFx0XHRcdFx0Ly8gRW5zdXJlIHRoZXNlIHJlbWFpbiB1bmRlZmluZWRcclxuXHRcdFx0XHRcdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0Z2xvYmFsVGhpczogdW5kZWZpbmVkXHJcblx0XHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRcdHJldHVybiB0ZW1wbGF0ZUZ1bmMoc2VjdXJlRGF0YSk7XHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0Ly8gQ2FjaGUgYW5kIHJldHVybiB0aGUgc2VjdXJlIHRlbXBsYXRlIGZ1bmN0aW9uXHJcblx0XHRcdFx0cmV0dXJuIChFdmFsdWF0b3IuY2FjaGVbY2FjaGVLZXldID0gc2VjdXJlVGVtcGxhdGVGdW5jKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignRXJyb3Igd2hpbGUgcHJvY2Vzc2luZyB0ZW1wbGF0ZScsIGVyciwgdGVtcGxhdGUpO1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW50ZXJwb2xhdGVzIGEgdGVtcGxhdGUgd2l0aCBkYXRhLCBoYW5kbGluZyBib3RoIGZ1bmN0aW9uIHRlbXBsYXRlcyBhbmQgc3RyaW5nIHRlbXBsYXRlcy5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIGludGVycG9sYXRpb24gaGFwcGVucyBpbiBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHdpbmRvdyBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IHJhd1RlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGludGVycG9sYXRlLCBlaXRoZXIgYXMgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgdG8gdXNlIGZvciBpbnRlcnBvbGF0aW9uLlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcnBvbGF0aW9uIHByb2Nlc3MuXHJcblx0ICogQHJldHVybnMge3N0cmluZ3xhbnl9IC0gVGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJwb2xhdGlvbiwgdHlwaWNhbGx5IGEgc3RyaW5nIGJ1dCBjb3VsZCBiZSBhbnkgdHlwZSBkZXBlbmRpbmcgb24gdGhlIHRlbXBsYXRlLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBpbnRlcnBvbGF0ZShcclxuXHRcdHJhd1RlbXBsYXRlOiBzdHJpbmcgfCBGdW5jdGlvbixcclxuXHRcdGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcblx0XHRvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge31cclxuXHQpOiBzdHJpbmcgfCBhbnkge1xyXG5cdFx0aWYgKHR5cGVvZiByYXdUZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdC8vIElmIHRoZSB0ZW1wbGF0ZSBpcyBhIGZ1bmN0aW9uLCBleGVjdXRlIGl0IHdpdGggdGhlIGRhdGFcclxuXHRcdFx0XHQvLyBXZSBjYW4ndCBkaXJlY3RseSBzZWN1cmUgYSBwcm92aWRlZCBmdW5jdGlvbiwgYnV0IHdlIGNhbiB1c2UgZXhlY3V0ZVxyXG5cdFx0XHRcdC8vIHRvIHJ1biBpdCBpbiBhIHNlY3VyZSBjb250ZXh0IGlmIG5lZWRlZFxyXG5cdFx0XHRcdGlmIChvcHRpb25zLnNlY3VyaXR5TW9kZSAhPT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0XHRcdGNvbnN0IHNlY3VyZURhdGEgPSB7XHJcblx0XHRcdFx0XHRcdC4uLmNyZWF0ZVNlY3VyZUNvbnRleHQoKSxcclxuXHRcdFx0XHRcdFx0Li4uZGF0YSxcclxuXHRcdFx0XHRcdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0Z2xvYmFsVGhpczogdW5kZWZpbmVkXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0cmV0dXJuIHJhd1RlbXBsYXRlKHNlY3VyZURhdGEpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gcmF3VGVtcGxhdGUoZGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zb2xlLndhcm4oJ0Vycm9yIGludGVycG9sYXRpbmcgdGVtcGxhdGUnLCBlcnIsIGRhdGEpO1xyXG5cdFx0XHRcdHJldHVybiAoZXJyIGFzIEVycm9yKS5tZXNzYWdlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmF3VGVtcGxhdGUgPSBTdHJpbmcocmF3VGVtcGxhdGUpO1xyXG5cdFx0Ly8gUGFzcyB0aGUgc2VjdXJpdHkgbW9kZSBvcHRpb24gdG8gdGhlIHRlbXBsYXRlIG1ldGhvZFxyXG5cdFx0Y29uc3QgdGVtcGxhdGUgPSBFdmFsdWF0b3IudGVtcGxhdGUocmF3VGVtcGxhdGUsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdHJldHVybiB0ZW1wbGF0ZShkYXRhKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc29sZS53YXJuKCdFcnJvciBpbnRlcnBvbGF0aW5nIHRlbXBsYXRlJywgZXJyLCByYXdUZW1wbGF0ZSwgZGF0YSk7XHJcblx0XHRcdFx0cmV0dXJuIChlcnIgYXMgRXJyb3IpLm1lc3NhZ2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGVtcGxhdGU7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL2V2YWx1YXRvci9ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUlyQzs7O0dBR0c7QUFDSCxTQUFTLG1CQUFtQjtJQUMzQixvREFBb0Q7SUFDcEQsT0FBTztRQUNOLHNEQUFzRDtRQUN0RCxPQUFPLEVBQUU7WUFDUixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNwQjtRQUNELDZDQUE2QztRQUM3QyxJQUFJO1FBQ0osSUFBSTtRQUNKLE1BQU07UUFDTixNQUFNO1FBQ04sT0FBTztRQUNQLEtBQUs7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLENBQUMsRUFBRSxDQUFDLENBQUMsd0RBQXdEO0tBQzdELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBbUJyQjs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUF1QixFQUFFLEdBQUcsTUFBYTtRQUN6RCw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxJQUNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsTUFB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LENBQUM7YUFDdEI7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE9BQVEsR0FBYSxDQUFDLE9BQU8sQ0FBQzthQUM5QjtTQUNEO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQzs7QUF0VkQ7OztHQUdHO0FBQ0ksZUFBSyxHQUE2QixFQUFFLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSSwwQkFBZ0IsR0FBcUI7SUFDM0MsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixRQUFRLEVBQUUsbUJBQW1CO0lBQzdCLE1BQU0sRUFBRSx5QkFBeUI7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfLCB7IGdldCwga2V5cywgc2V0LCB0cmltLCB2YWx1ZXMgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgc3RyaW5nSGFzaCBmcm9tICdzdHJpbmctaGFzaCc7XHJcblxyXG5pbXBvcnQgeyBFdmFsdWF0b3JPcHRpb25zLCBUZW1wbGF0ZVNldHRpbmdzIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHNlY3VyZSBjb250ZXh0IGZvciBmdW5jdGlvbiBldmFsdWF0aW9uIHRoYXQgcHJldmVudHMgYWNjZXNzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LlxyXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn0gQSBzZWN1cmUgY29udGV4dCBvYmplY3Qgd2l0aCBzYWZlIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTZWN1cmVDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cdC8vIENyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IHdpdGggb25seSBzYWZlIHByb3BlcnRpZXNcclxuXHRyZXR1cm4ge1xyXG5cdFx0Ly8gQWRkIGFueSBzYWZlIGdsb2JhbHMgaGVyZSB0aGF0IHNob3VsZCBiZSBhY2Nlc3NpYmxlXHJcblx0XHRjb25zb2xlOiB7XHJcblx0XHRcdGxvZzogY29uc29sZS5sb2csXHJcblx0XHRcdHdhcm46IGNvbnNvbGUud2FybixcclxuXHRcdFx0ZXJyb3I6IGNvbnNvbGUuZXJyb3JcclxuXHRcdH0sXHJcblx0XHQvLyBBZGQgb3RoZXIgc2FmZSBvYmplY3RzL2Z1bmN0aW9ucyBhcyBuZWVkZWRcclxuXHRcdE1hdGgsXHJcblx0XHREYXRlLFxyXG5cdFx0TnVtYmVyLFxyXG5cdFx0U3RyaW5nLFxyXG5cdFx0Qm9vbGVhbixcclxuXHRcdEFycmF5LFxyXG5cdFx0T2JqZWN0LFxyXG5cdFx0SlNPTixcclxuXHRcdC8vIFByZXZlbnQgYWNjZXNzIHRvIHdpbmRvd1xyXG5cdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWQsXHJcblx0XHRfOiBfIC8vIEluY2x1ZGUgbG9kYXNoIGlmIG5lZWRlZCwgYnV0IGVuc3VyZSBpdCdzIHVzZWQgc2FmZWx5XHJcblx0fTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgdXRpbGl0eSBjbGFzcyBmb3IgZXZhbHVhdGluZyBleHByZXNzaW9ucywgaW50ZXJwb2xhdGluZyBzdHJpbmdzLCBhbmQgd29ya2luZyB3aXRoIHRlbXBsYXRlcy5cclxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZHluYW1pYyBldmFsdWF0aW9uIG9mIGNvZGUsIHN0cmluZyBpbnRlcnBvbGF0aW9uLFxyXG4gKiBhbmQgdGVtcGxhdGUgcHJvY2Vzc2luZyB3aXRoIGNhY2hpbmcgY2FwYWJpbGl0aWVzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEV2YWx1YXRvciB7XHJcblx0LyoqXHJcblx0ICogQ2FjaGUgZm9yIHN0b3JpbmcgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb25zIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuXHJcblx0ICogS2V5cyBhcmUgc3RyaW5nIGhhc2hlcyBvZiB0aGUgdGVtcGxhdGUsIHZhbHVlcyBhcmUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9ucy5cclxuXHQgKi9cclxuXHRzdGF0aWMgY2FjaGU6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXR0aW5ncyBmb3IgdGVtcGxhdGUgcHJvY2Vzc2luZywgZGVmaW5pbmcgcmVnZXggcGF0dGVybnMgZm9yIGRpZmZlcmVudCB0ZW1wbGF0ZSBvcGVyYXRpb25zLlxyXG5cdCAqIC0gaW50ZXJwb2xhdGU6IFBhdHRlcm4gZm9yIHZhcmlhYmxlIGludGVycG9sYXRpb24gKHt7IHZhcmlhYmxlIH19KVxyXG5cdCAqIC0gZXZhbHVhdGU6IFBhdHRlcm4gZm9yIGNvZGUgZXZhbHVhdGlvbiAoeyUgY29kZSAlfSlcclxuXHQgKiAtIGVzY2FwZTogUGF0dGVybiBmb3IgSFRNTCBlc2NhcGluZyAoe3t7IHZhcmlhYmxlIH19fSlcclxuXHQgKi9cclxuXHRzdGF0aWMgdGVtcGxhdGVTZXR0aW5nczogVGVtcGxhdGVTZXR0aW5ncyA9IHtcclxuXHRcdGludGVycG9sYXRlOiAve3soW1xcc1xcU10rPyl9fS9nLFxyXG5cdFx0ZXZhbHVhdGU6IC9cXHslKFtcXHNcXFNdKz8pJVxcfS9nLFxyXG5cdFx0ZXNjYXBlOiAvXFx7XFx7XFx7KFtcXHNcXFNdKz8pXFx9XFx9XFx9L2dcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgZnVuY3Rpb24gZnJvbSBhIHN0cmluZyBvciByZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBhbHJlYWR5IHByb3ZpZGVkLlxyXG5cdCAqIFVzZXMgYSBzZWN1cmUgY29udGV4dCB0byBwcmV2ZW50IGFjY2VzcyB0byB0aGUgd2luZG93IG9iamVjdCBieSBkZWZhdWx0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfEZ1bmN0aW9ufSBmdW5jIC0gVGhlIGZ1bmN0aW9uIG9yIHN0cmluZyB0byBjb252ZXJ0IHRvIGEgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHsuLi5hbnl9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uLlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2YWx1YXRpb24uXHJcblx0ICogQHJldHVybnMge0Z1bmN0aW9ufSAtIFRoZSByZXN1bHRpbmcgZnVuY3Rpb24uXHJcblx0ICovXHJcblx0c3RhdGljIGV2YWx1YXRvcihmdW5jOiBzdHJpbmcgfCBGdW5jdGlvbiwgLi4ucGFyYW1zOiBhbnlbXSk6IEZ1bmN0aW9uIHtcclxuXHRcdC8vIEV4dHJhY3Qgb3B0aW9ucyBpZiB0aGUgbGFzdCBwYXJhbWV0ZXIgaXMgYW4gb3B0aW9ucyBvYmplY3RcclxuXHRcdGxldCBvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge307XHJcblx0XHRpZiAoXHJcblx0XHRcdHBhcmFtcy5sZW5ndGggPiAwICYmXHJcblx0XHRcdHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV0gJiZcclxuXHRcdFx0dHlwZW9mIHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV0gPT09ICdvYmplY3QnICYmXHJcblx0XHRcdCdzZWN1cml0eU1vZGUnIGluIHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV1cclxuXHRcdCkge1xyXG5cdFx0XHRvcHRpb25zID0gcGFyYW1zLnBvcCgpIGFzIEV2YWx1YXRvck9wdGlvbnM7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdHJldHVybiBmdW5jO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0eXBlb2YgcGFyYW1zWzBdID09PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRwYXJhbXMgPSBrZXlzKHBhcmFtc1swXSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSBzZWN1cmUgbW9kZSAoZGVmYXVsdCkgb3IgdW5zYWZlIG1vZGVcclxuXHRcdGNvbnN0IHNlY3VyaXR5TW9kZSA9IG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnO1xyXG5cclxuXHRcdGlmIChzZWN1cml0eU1vZGUgPT09ICd1bnNhZmUnKSB7XHJcblx0XHRcdC8vIEluIHVuc2FmZSBtb2RlLCBjcmVhdGUgYSBmdW5jdGlvbiB3aXRoIGFjY2VzcyB0byBhbGwgZ2xvYmFsc1xyXG5cdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKC4uLnBhcmFtcywgZnVuYyBhcyBzdHJpbmcpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgc2FuZGJveCA9IGNyZWF0ZVNlY3VyZUNvbnRleHQoKTtcclxuXHRcdGNvbnN0IHNhbmRib3hLZXlzID0gT2JqZWN0LmtleXMoc2FuZGJveCk7XHJcblx0XHRjb25zdCBzYW5kYm94QXNzaWdubWVudHMgPSBzYW5kYm94S2V5cy5tYXAoKGtleSkgPT4gYGNvbnN0ICR7a2V5fSA9IHNhbmRib3guJHtrZXl9O2ApLmpvaW4oJycpO1xyXG5cclxuXHRcdGNvbnN0IHdyYXBwZXIgPSBuZXcgRnVuY3Rpb24oLi4ucGFyYW1zLCAnc2FuZGJveCcsIGAke3NhbmRib3hBc3NpZ25tZW50c30ke2Z1bmMgYXMgc3RyaW5nfWApO1xyXG5cclxuXHRcdHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHdyYXBwZXIoLi4uYXJncywgc2FuZGJveCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXBsYWNlcyB0ZW1wbGF0ZSBleHByZXNzaW9ucyBpbiBhIHN0cmluZyB3aXRoIHZhbHVlcyBmcm9tIGRhdGEuXHJcblx0ICogU3VwcG9ydHMgZnVuY3Rpb24gY2FsbHMgd2l0aGluIHRlbXBsYXRlcyBhbmQgZmFsbGJhY2sgdmFsdWVzIHVzaW5nIHx8IHN5bnRheC5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIGV2YWx1YXRpb24gaGFwcGVucyBpbiBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHdpbmRvdyBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHJhd1RlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHN0cmluZyBjb250YWluaW5nIGV4cHJlc3Npb25zIHRvIGludGVycG9sYXRlLlxyXG5cdCAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBjb250YWluaW5nIHZhbHVlcyB0byB1c2UgZm9yIGludGVycG9sYXRpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgaW50ZXJwb2xhdGlvbiBwcm9jZXNzLlxyXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGludGVycG9sYXRlZCBzdHJpbmcgd2l0aCBhbGwgZXhwcmVzc2lvbnMgcmVwbGFjZWQgd2l0aCBhY3R1YWwgdmFsdWVzLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBpbnRlcnBvbGF0ZVN0cmluZyhyYXdUZW1wbGF0ZTogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge30pOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFyYXdUZW1wbGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gJyc7XHJcblx0XHR9XHJcblx0XHRpZiAodHlwZW9mIHJhd1RlbXBsYXRlICE9PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gKHJhd1RlbXBsYXRlIGFzIGFueSkudG9TdHJpbmcoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIHNlY3VyZSBtb2RlIChkZWZhdWx0KSBvciB1bnNhZmUgbW9kZVxyXG5cdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0Ly8gQ3JlYXRlIGEgc2VjdXJlIGRhdGEgb2JqZWN0IGlmIG5lZWRlZFxyXG5cdFx0Y29uc3Qgc2VjdXJlRGF0YSA9XHJcblx0XHRcdHNlY3VyaXR5TW9kZSA9PT0gJ3Vuc2FmZSdcclxuXHRcdFx0XHQ/IGRhdGFcclxuXHRcdFx0XHQ6IHtcclxuXHRcdFx0XHRcdFx0Li4uY3JlYXRlU2VjdXJlQ29udGV4dCgpLFxyXG5cdFx0XHRcdFx0XHQuLi5kYXRhLFxyXG5cdFx0XHRcdFx0XHQvLyBFbnN1cmUgdGhlc2UgcmVtYWluIHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0XHR3aW5kb3c6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0c2VsZjogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHRcdFx0XHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIHJhd1RlbXBsYXRlLnJlcGxhY2UoLyh7e1xccyooLio/KVxccyp9fSkvZywgKG1hdGNoOiBzdHJpbmcsICQxOiBzdHJpbmcsIGV4cHJlc3Npb246IHN0cmluZykgPT4ge1xyXG5cdFx0XHRpZiAoZXhwcmVzc2lvbi5pbmRleE9mKCcoJykgIT09IC0xKSB7XHJcblx0XHRcdFx0cmV0dXJuIGV4cHJlc3Npb24ucmVwbGFjZSgvKFteKF0rKVxcKChbXildKylcXHMqXFwpOz8vLCAoXzogc3RyaW5nLCBmbk5hbWU6IHN0cmluZywgYXJnc1N0cjogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRmbk5hbWUgPSB0cmltKGZuTmFtZSk7XHJcblx0XHRcdFx0XHRjb25zdCBmdW5jID0gZ2V0KHNlY3VyZURhdGEsIGZuTmFtZSk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKGZ1bmMpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGFyZ3NTdHIpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBhcmdzID0gYXJnc1N0ci5zcGxpdCgnLCcpLm1hcCgoYXJnOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRyaW1tZWQgPSB0cmltKGFyZyk7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoL15bJ1wiXS8udGVzdCh0cmltbWVkKSkgcmV0dXJuIHRyaW1tZWQuc2xpY2UoMSwgLTEpO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGdldChzZWN1cmVEYXRhLCB0cmltbWVkKTtcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRXZhbHVhdG9yLmV2YWx1YXRlKGZ1bmMsIGFyZ3MsICcnLCBmYWxzZSwgc2VjdXJlRGF0YSwgb3B0aW9ucyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0cmV0dXJuIEV2YWx1YXRvci5ldmFsdWF0ZShmdW5jLCBbXSwgJycsIGZhbHNlLCBzZWN1cmVEYXRhLCBvcHRpb25zKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJldHVybiAnJztcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRsZXQgZGF0YVBhdGggPSBleHByZXNzaW9uO1xyXG5cdFx0XHRcdGlmIChleHByZXNzaW9uLmluZGV4T2YoJz8nKSAhPT0gLTEpIHtcclxuXHRcdFx0XHRcdGRhdGFQYXRoID0gZXhwcmVzc2lvbi5yZXBsYWNlKC9cXD9cXC4vZywgJy4nKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgcGFydHMgPSBkYXRhUGF0aC5zcGxpdCgnfHwnKS5tYXAoKGl0ZW06IHN0cmluZykgPT4gaXRlbS50cmltKCkpO1xyXG5cdFx0XHRcdGxldCB2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdGxldCBwYXRoID0gJyc7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0cGF0aCA9IHBhcnRzW2ldO1xyXG5cdFx0XHRcdFx0aWYgKF8uaGFzKHNlY3VyZURhdGEsIHBhdGgpKSB7XHJcblx0XHRcdFx0XHRcdHZhbHVlID0gXy5nZXQoc2VjdXJlRGF0YSwgcGF0aCk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAob3B0aW9ucy5kYXRhKSB7XHJcblx0XHRcdFx0XHRzZXQob3B0aW9ucy5kYXRhLCBwYXRoLCB2YWx1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQZXJmb3JtcyBhbiBldmFsdWF0aW9uIHVzaW5nIHRoZSBldmFsdWF0aW9uIGNvbnRleHQgb2YgdGhpcyBjb21wb25lbnQuXHJcblx0ICogQnkgZGVmYXVsdCwgZW5zdXJlcyBldmFsdWF0aW9uIGhhcHBlbnMgaW4gYSBzZWN1cmUgY29udGV4dCB0byBwcmV2ZW50IGFjY2VzcyB0byB3aW5kb3cgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfEZ1bmN0aW9ufG9iamVjdH0gZnVuYyAtIFRoZSBmdW5jdGlvbiBvciBzdHJpbmcgdG8gZXZhbHVhdGUuXHJcblx0ICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGV2YWx1YXRpb24uXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHJldCAtIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB3aXRoaW4gdGhlIGV2YWx1YXRpb24gY29udGV4dCB0byByZXR1cm4uXHJcblx0ICogQHBhcmFtIHtib29sZWFufSBpbnRlcnBvbGF0ZSAtIERldGVybWluZXMgaWYgaXQgc2hvdWxkIHJlcGxhY2UgYWxsIHt7IH19IHRva2VuIHJlZmVyZW5jZXMgd2l0aCBhY3R1YWwgZGF0YS5cclxuXHQgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dCAtICAgLSBUaGUgZXZhbHVhdGlvbiBjb250ZXh0LlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9ucyB9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byBwYXNzIHRvIHRoZSBldmFsdWF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIHsqfSAtIFRoZSByZXN1bHQgb2YgdGhlIGV2YWx1YXRpb24uXHJcblx0ICovXHJcblx0c3RhdGljIGV2YWx1YXRlKFxyXG5cdFx0ZnVuYzogYW55LFxyXG5cdFx0YXJnczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxyXG5cdFx0cmV0OiBzdHJpbmcgPSAnc2hvdycsXHJcblx0XHRpbnRlcnBvbGF0ZTogYm9vbGVhbiA9IGZhbHNlLFxyXG5cdFx0Y29udGV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxyXG5cdFx0b3B0aW9uczogRXZhbHVhdG9yT3B0aW9ucyA9IHt9XHJcblx0KTogYW55IHtcclxuXHRcdGxldCByZXR1cm5WYWwgPSBudWxsO1xyXG5cclxuXHRcdGNvbnN0IGZpZWxkID0gYXJncy5maWVsZCA/IGFyZ3MuZmllbGQgOiB7IGtleTogJ3Vua25vd24nIH07XHJcblx0XHRjb25zdCBmaWVsZEtleSA9IGZpZWxkLmtleTtcclxuXHJcblx0XHRpZiAodHlwZW9mIGZ1bmMgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdGlmIChyZXQpIHtcclxuXHRcdFx0XHRmdW5jID0gYHZhciAke3JldH07JHtmdW5jfTtyZXR1cm4gJHtyZXR9YDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGludGVycG9sYXRlKSB7XHJcblx0XHRcdFx0ZnVuYyA9IEV2YWx1YXRvci5pbnRlcnBvbGF0ZShmdW5jLCBhcmdzLCBvcHRpb25zKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHQvLyBQYXNzIHRoZSBzZWN1cml0eSBtb2RlIG9wdGlvbiB0byB0aGUgZXZhbHVhdG9yXHJcblx0XHRcdFx0Y29uc3QgZXZhbHVhdG9yT3B0aW9ucyA9IHsgc2VjdXJpdHlNb2RlOiBvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJyB9O1xyXG5cdFx0XHRcdGZ1bmMgPSBFdmFsdWF0b3IuZXZhbHVhdG9yKGZ1bmMsIGFyZ3MsIGNvbnRleHQsIGV2YWx1YXRvck9wdGlvbnMpO1xyXG5cdFx0XHRcdGFyZ3MgPSBBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IHZhbHVlcyhhcmdzKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc29sZS53YXJuKGBBbiBlcnJvciBvY2N1cmVkIHdpdGhpbiB0aGUgY3VzdG9tIGZ1bmN0aW9uIGZvciAke2ZpZWxkS2V5fWAsIGVycik7XHJcblx0XHRcdFx0cmV0dXJuVmFsID0gbnVsbDtcclxuXHRcdFx0XHRmdW5jID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRyZXR1cm5WYWwgPSBFdmFsdWF0b3IuZXhlY3V0ZShmdW5jLCBhcmdzLCBjb250ZXh0LCBvcHRpb25zKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0cmV0dXJuVmFsID0gbnVsbDtcclxuXHRcdFx0XHRjb25zb2xlLndhcm4oYEFuIGVycm9yIG9jY3VyZWQgd2l0aGluIGN1c3RvbSBmdW5jdGlvbiBmb3IgJHtmaWVsZEtleX1gLCBlcnIpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGZ1bmMpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKGBVbmtub3duIGZ1bmN0aW9uIHR5cGUgZm9yICR7ZmllbGRLZXl9YCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmV0dXJuVmFsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aXRoIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgY29udGV4dC5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIGV4ZWN1dGlvbiBoYXBwZW5zIGluIGEgc2VjdXJlIGNvbnRleHQgdG8gcHJldmVudCBhY2Nlc3MgdG8gd2luZG93IG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIC0gVGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXHJcblx0ICogQHBhcmFtIHthbnlbXXxSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmdW5jdGlvbiwgZWl0aGVyIGFzIGFuIGFycmF5IG9yIG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFtjb250ZXh0PXt9XSAtIFRoZSBjb250ZXh0ICh0aGlzKSB0byB1c2Ugd2hlbiBleGVjdXRpbmcgdGhlIGZ1bmN0aW9uLlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGV4ZWN1dGlvbi5cclxuXHQgKiBAcmV0dXJucyB7YW55fSAtIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGV4ZWN1dGlvbi5cclxuXHQgKi9cclxuXHRzdGF0aWMgZXhlY3V0ZShcclxuXHRcdGZ1bmM6IEZ1bmN0aW9uLFxyXG5cdFx0YXJnczogYW55W10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG5cdFx0Y29udGV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxyXG5cdFx0b3B0aW9uczogRXZhbHVhdG9yT3B0aW9ucyA9IHt9XHJcblx0KTogYW55IHtcclxuXHRcdC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugc2VjdXJlIG1vZGUgKGRlZmF1bHQpIG9yIHVuc2FmZSBtb2RlXHJcblx0XHRjb25zdCBzZWN1cml0eU1vZGUgPSBvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJztcclxuXHJcblx0XHRpZiAoc2VjdXJpdHlNb2RlID09PSAndW5zYWZlJykge1xyXG5cdFx0XHQvLyBJbiB1bnNhZmUgbW9kZSwgZXhlY3V0ZSB3aXRoIHRoZSBvcmlnaW5hbCBjb250ZXh0XHJcblx0XHRcdHJldHVybiBBcnJheS5pc0FycmF5KGFyZ3MpID8gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKSA6IGZ1bmMuY2FsbChjb250ZXh0LCBhcmdzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIEluIHNlY3VyZSBtb2RlLCBjcmVhdGUgYSBzZWN1cmUgY29udGV4dCBieSBtZXJnaW5nIHRoZSBwcm92aWRlZCBjb250ZXh0IHdpdGggb3VyIHNlY3VyZSBjb250ZXh0XHJcblx0XHRcdGNvbnN0IHNlY3VyZUNvbnRleHQgPSB7XHJcblx0XHRcdFx0Li4uY3JlYXRlU2VjdXJlQ29udGV4dCgpLFxyXG5cdFx0XHRcdC4uLmNvbnRleHQsXHJcblx0XHRcdFx0Ly8gRW5zdXJlIHRoZXNlIHJlbWFpbiB1bmRlZmluZWQgZXZlbiBpZiB0aGV5IHdlcmUgaW4gdGhlIHByb3ZpZGVkIGNvbnRleHRcclxuXHRcdFx0XHR3aW5kb3c6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0Z2xvYmFsVGhpczogdW5kZWZpbmVkXHJcblx0XHRcdH07XHJcblxyXG5cdFx0XHQvLyBFeGVjdXRlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzZWN1cmUgY29udGV4dFxyXG5cdFx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheShhcmdzKSA/IGZ1bmMuYXBwbHkoc2VjdXJlQ29udGV4dCwgYXJncykgOiBmdW5jLmNhbGwoc2VjdXJlQ29udGV4dCwgYXJncyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgdGVtcGxhdGUgZnVuY3Rpb24gZnJvbSBhIHN0cmluZyB3aXRoIGNhY2hpbmcgZm9yIHBlcmZvcm1hbmNlLlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGV4ZWN1dGVzIGluIGEgc2VjdXJlIGNvbnRleHQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHN0cmluZyB0byBjb21waWxlIGludG8gYSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gW2hhc2hdIC0gT3B0aW9uYWwgaGFzaCB0byB1c2UgYXMgY2FjaGUga2V5LiBJZiBub3QgcHJvdmlkZWQsIGEgaGFzaCB3aWxsIGJlIGdlbmVyYXRlZCBmcm9tIHRoZSB0ZW1wbGF0ZS5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnN9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0ZW1wbGF0ZS5cclxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb258dW5kZWZpbmVkfSAtIFRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiwgb3IgdW5kZWZpbmVkIGlmIGNvbXBpbGF0aW9uIGZhaWxzLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyB0ZW1wbGF0ZSh0ZW1wbGF0ZTogc3RyaW5nLCBoYXNoPzogc3RyaW5nLCBvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge30pOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XHJcblx0XHRoYXNoID0gaGFzaCB8fCBzdHJpbmdIYXNoKHRlbXBsYXRlKS50b1N0cmluZygpO1xyXG5cclxuXHRcdC8vIElmIGhhc2ggY29udGFpbnMgb3B0aW9ucyBvYmplY3QsIGV4dHJhY3QgaXRcclxuXHRcdGlmICh0eXBlb2YgaGFzaCA9PT0gJ29iamVjdCcgJiYgJ3NlY3VyaXR5TW9kZScgaW4gaGFzaCkge1xyXG5cdFx0XHRvcHRpb25zID0gaGFzaCBhcyB1bmtub3duIGFzIEV2YWx1YXRvck9wdGlvbnM7XHJcblx0XHRcdGhhc2ggPSBzdHJpbmdIYXNoKHRlbXBsYXRlKS50b1N0cmluZygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgdmVyc2lvblxyXG5cdFx0Y29uc3QgY2FjaGVLZXkgPSBoYXNoICsgKG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnKTtcclxuXHRcdGlmIChFdmFsdWF0b3IuY2FjaGVbY2FjaGVLZXldKSB7XHJcblx0XHRcdHJldHVybiBFdmFsdWF0b3IuY2FjaGVbY2FjaGVLZXldO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRyeSB7XHJcblx0XHRcdHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgvY3R4XFwuL2csICcnKTtcclxuXHJcblx0XHRcdC8vIENyZWF0ZSB0aGUgdGVtcGxhdGUgZnVuY3Rpb24gdXNpbmcgbG9kYXNoXHJcblx0XHRcdGNvbnN0IHRlbXBsYXRlRnVuYyA9IF8udGVtcGxhdGUodGVtcGxhdGUsIEV2YWx1YXRvci50ZW1wbGF0ZVNldHRpbmdzKTtcclxuXHJcblx0XHRcdC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugc2VjdXJlIG1vZGUgKGRlZmF1bHQpIG9yIHVuc2FmZSBtb2RlXHJcblx0XHRcdGNvbnN0IHNlY3VyaXR5TW9kZSA9IG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnO1xyXG5cclxuXHRcdFx0aWYgKHNlY3VyaXR5TW9kZSA9PT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0XHQvLyBJbiB1bnNhZmUgbW9kZSwgcmV0dXJuIHRoZSBvcmlnaW5hbCB0ZW1wbGF0ZSBmdW5jdGlvblxyXG5cdFx0XHRcdHJldHVybiAoRXZhbHVhdG9yLmNhY2hlW2NhY2hlS2V5XSA9IHRlbXBsYXRlRnVuYyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gSW4gc2VjdXJlIG1vZGUsIHdyYXAgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCBydW5zIGluIGEgc2VjdXJlIGNvbnRleHRcclxuXHRcdFx0XHRjb25zdCBzZWN1cmVUZW1wbGF0ZUZ1bmMgPSAoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHQvLyBDcmVhdGUgYSBzZWN1cmUgY29udGV4dCBmb3IgdGhlIHRlbXBsYXRlXHJcblx0XHRcdFx0XHRjb25zdCBzZWN1cmVEYXRhID0ge1xyXG5cdFx0XHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0XHRcdC4uLmRhdGEsXHJcblx0XHRcdFx0XHRcdC8vIEVuc3VyZSB0aGVzZSByZW1haW4gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0XHRyZXR1cm4gdGVtcGxhdGVGdW5jKHNlY3VyZURhdGEpO1xyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdC8vIENhY2hlIGFuZCByZXR1cm4gdGhlIHNlY3VyZSB0ZW1wbGF0ZSBmdW5jdGlvblxyXG5cdFx0XHRcdHJldHVybiAoRXZhbHVhdG9yLmNhY2hlW2NhY2hlS2V5XSA9IHNlY3VyZVRlbXBsYXRlRnVuYyk7XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGVycikge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ0Vycm9yIHdoaWxlIHByb2Nlc3NpbmcgdGVtcGxhdGUnLCBlcnIsIHRlbXBsYXRlKTtcclxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEludGVycG9sYXRlcyBhIHRlbXBsYXRlIHdpdGggZGF0YSwgaGFuZGxpbmcgYm90aCBmdW5jdGlvbiB0ZW1wbGF0ZXMgYW5kIHN0cmluZyB0ZW1wbGF0ZXMuXHJcblx0ICogQnkgZGVmYXVsdCwgZW5zdXJlcyBpbnRlcnBvbGF0aW9uIGhhcHBlbnMgaW4gYSBzZWN1cmUgY29udGV4dCB0byBwcmV2ZW50IGFjY2VzcyB0byB3aW5kb3cgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfEZ1bmN0aW9ufSByYXdUZW1wbGF0ZSAtIFRoZSB0ZW1wbGF0ZSB0byBpbnRlcnBvbGF0ZSwgZWl0aGVyIGFzIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IHRvIHVzZSBmb3IgaW50ZXJwb2xhdGlvbi5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnN9IG9wdGlvbnMgLSBPcHRpb25zIGZvciB0aGUgaW50ZXJwb2xhdGlvbiBwcm9jZXNzLlxyXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd8YW55fSAtIFRoZSByZXN1bHQgb2YgdGhlIGludGVycG9sYXRpb24sIHR5cGljYWxseSBhIHN0cmluZyBidXQgY291bGQgYmUgYW55IHR5cGUgZGVwZW5kaW5nIG9uIHRoZSB0ZW1wbGF0ZS5cclxuXHQgKi9cclxuXHRzdGF0aWMgaW50ZXJwb2xhdGUoXHJcblx0XHRyYXdUZW1wbGF0ZTogc3RyaW5nIHwgRnVuY3Rpb24sXHJcblx0XHRkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG5cdFx0b3B0aW9uczogRXZhbHVhdG9yT3B0aW9ucyA9IHt9XHJcblx0KTogc3RyaW5nIHwgYW55IHtcclxuXHRcdGlmICh0eXBlb2YgcmF3VGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHQvLyBJZiB0aGUgdGVtcGxhdGUgaXMgYSBmdW5jdGlvbiwgZXhlY3V0ZSBpdCB3aXRoIHRoZSBkYXRhXHJcblx0XHRcdFx0Ly8gV2UgY2FuJ3QgZGlyZWN0bHkgc2VjdXJlIGEgcHJvdmlkZWQgZnVuY3Rpb24sIGJ1dCB3ZSBjYW4gdXNlIGV4ZWN1dGVcclxuXHRcdFx0XHQvLyB0byBydW4gaXQgaW4gYSBzZWN1cmUgY29udGV4dCBpZiBuZWVkZWRcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5zZWN1cml0eU1vZGUgIT09ICd1bnNhZmUnKSB7XHJcblx0XHRcdFx0XHRjb25zdCBzZWN1cmVEYXRhID0ge1xyXG5cdFx0XHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0XHRcdC4uLmRhdGEsXHJcblx0XHRcdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdHJldHVybiByYXdUZW1wbGF0ZShzZWN1cmVEYXRhKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHJhd1RlbXBsYXRlKGRhdGEpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc29sZS53YXJuKCdFcnJvciBpbnRlcnBvbGF0aW5nIHRlbXBsYXRlJywgZXJyLCBkYXRhKTtcclxuXHRcdFx0XHRyZXR1cm4gKGVyciBhcyBFcnJvcikubWVzc2FnZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJhd1RlbXBsYXRlID0gU3RyaW5nKHJhd1RlbXBsYXRlKTtcclxuXHRcdC8vIFBhc3MgdGhlIHNlY3VyaXR5IG1vZGUgb3B0aW9uIHRvIHRoZSB0ZW1wbGF0ZSBtZXRob2RcclxuXHRcdGNvbnN0IHRlbXBsYXRlID0gRXZhbHVhdG9yLnRlbXBsYXRlKHJhd1RlbXBsYXRlLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xyXG5cclxuXHRcdGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRyZXR1cm4gdGVtcGxhdGUoZGF0YSk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycikge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybignRXJyb3IgaW50ZXJwb2xhdGluZyB0ZW1wbGF0ZScsIGVyciwgcmF3VGVtcGxhdGUsIGRhdGEpO1xyXG5cdFx0XHRcdHJldHVybiAoZXJyIGFzIEVycm9yKS5tZXNzYWdlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRlbXBsYXRlO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG5cdCAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuXHQgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuXHQgKi9cclxuXHRzZWN1cml0eU1vZGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG5cdCAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuXHQgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuXHQgKi9cclxuXHRzZWN1cml0eU1vZGU/OiAnc2VjdXJlJyB8ICd1bnNhZmUnO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGVtcGxhdGVTZXR0aW5ncyA9IHtcclxuXHRpbnRlcnBvbGF0ZTogUmVnRXhwO1xyXG5cdGV2YWx1YXRlOiBSZWdFeHA7XHJcblx0ZXNjYXBlOiBSZWdFeHA7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBJbnRlcnBvbGF0ZVN0cmluZyA9IGAke3N0cmluZ317eyR7c3RyaW5nIHwgbnVtYmVyfX19JHtzdHJpbmd9YDtcclxuXHJcbmV4cG9ydCB0eXBlIEV2YWx1YXRlZFN0cmluZzxWQVIgZXh0ZW5kcyBzdHJpbmcgPSAnc2hvdyc+ID0gYCR7c3RyaW5nfSR7VkFSfSR7V2hpdGVzcGFjZX09JHtXaGl0ZXNwYWNlfSR7c3RyaW5nfWA7XHJcblxyXG50eXBlIFdoaXRlc3BhY2UgPSAnJyB8ICcgJyB8IGAke2FueX1gO1xyXG4iXX0=
|