@angular/compiler 17.0.0-next.8 → 17.0.0-rc.1
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/esm2022/src/ml_parser/ast.mjs +3 -2
- package/esm2022/src/ml_parser/html_tags.mjs +4 -4
- package/esm2022/src/ml_parser/html_whitespaces.mjs +2 -2
- package/esm2022/src/ml_parser/icu_ast_expander.mjs +2 -2
- package/esm2022/src/ml_parser/lexer.mjs +2 -13
- package/esm2022/src/ml_parser/parser.mjs +3 -3
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
- package/esm2022/src/render3/partial/directive.mjs +1 -1
- package/esm2022/src/render3/partial/factory.mjs +1 -1
- package/esm2022/src/render3/partial/injectable.mjs +1 -1
- package/esm2022/src/render3/partial/injector.mjs +1 -1
- package/esm2022/src/render3/partial/ng_module.mjs +1 -1
- package/esm2022/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/r3_ast.mjs +3 -2
- package/esm2022/src/render3/r3_control_flow.mjs +2 -2
- package/esm2022/src/render3/r3_template_transform.mjs +2 -2
- package/esm2022/src/shadow_css.mjs +10 -5
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +81 -26
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +65 -3
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +41 -6
- package/esm2022/src/template/pipeline/ir/src/ops/shared.mjs +3 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +25 -3
- package/esm2022/src/template/pipeline/ir/src/variable.mjs +1 -1
- package/esm2022/src/template/pipeline/src/compilation.mjs +6 -1
- package/esm2022/src/template/pipeline/src/emit.mjs +17 -6
- package/esm2022/src/template/pipeline/src/ingest.mjs +92 -11
- package/esm2022/src/template/pipeline/src/instruction.mjs +28 -7
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +1 -1
- package/esm2022/src/template/pipeline/src/phases/collapse_singleton_interpolations.mjs +31 -0
- package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +4 -1
- package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +11 -6
- package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/i18n_message_extraction.mjs +14 -4
- package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/icu_extraction.mjs +53 -0
- package/esm2022/src/template/pipeline/src/phases/local_refs.mjs +1 -2
- package/esm2022/src/template/pipeline/src/phases/namespace.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/naming.mjs +23 -4
- package/esm2022/src/template/pipeline/src/phases/ng_container.mjs +1 -6
- package/esm2022/src/template/pipeline/src/phases/ordering.mjs +40 -31
- package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +8 -8
- package/esm2022/src/template/pipeline/src/phases/pipe_creation.mjs +15 -3
- package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +2 -1
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +33 -2
- package/esm2022/src/template/pipeline/src/phases/repeater_derived_vars.mjs +40 -0
- package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +5 -1
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_placeholders.mjs +134 -36
- package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +2 -1
- package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +5 -6
- package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +49 -0
- package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +75 -0
- package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +31 -0
- package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +36 -3
- package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +43 -3
- package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +34 -0
- package/esm2022/src/template/pipeline/src/util/elements.mjs +6 -6
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +1106 -370
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +5 -3
- package/package.json +2 -2
- package/esm2022/src/template/pipeline/src/phases/align_pipe_variadic_var_offset.mjs +0 -42
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_placeholders.mjs +0 -39
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
+
*
|
|
2
3
|
* @license
|
|
3
4
|
* Copyright Google LLC All Rights Reserved.
|
|
4
5
|
*
|
|
@@ -8,10 +9,10 @@
|
|
|
8
9
|
import * as o from '../../../../src/output/output_ast';
|
|
9
10
|
import * as ir from '../ir';
|
|
10
11
|
import { CompilationJobKind as Kind } from './compilation';
|
|
11
|
-
import { phaseAlignPipeVariadicVarOffset } from './phases/align_pipe_variadic_var_offset';
|
|
12
12
|
import { phaseFindAnyCasts } from './phases/any_cast';
|
|
13
13
|
import { phaseApplyI18nExpressions } from './phases/apply_i18n_expressions';
|
|
14
14
|
import { phaseAssignI18nSlotDependencies } from './phases/assign_i18n_slot_dependencies';
|
|
15
|
+
import { phaseCollapseSingletonInterpolations } from './phases/collapse_singleton_interpolations';
|
|
15
16
|
import { phaseAttributeExtraction } from './phases/attribute_extraction';
|
|
16
17
|
import { phaseBindingSpecialization } from './phases/binding_specialization';
|
|
17
18
|
import { phaseChaining } from './phases/chaining';
|
|
@@ -19,6 +20,7 @@ import { phaseConditionals } from './phases/conditionals';
|
|
|
19
20
|
import { phaseConstCollection } from './phases/const_collection';
|
|
20
21
|
import { phaseEmptyElements } from './phases/empty_elements';
|
|
21
22
|
import { phaseExpandSafeReads } from './phases/expand_safe_reads';
|
|
23
|
+
import { phaseRepeaterDerivedVars } from './phases/repeater_derived_vars';
|
|
22
24
|
import { phaseGenerateAdvance } from './phases/generate_advance';
|
|
23
25
|
import { phaseGenerateProjectionDef } from './phases/generate_projection_def';
|
|
24
26
|
import { phaseGenerateVariables } from './phases/generate_variables';
|
|
@@ -27,6 +29,7 @@ import { phaseHostStylePropertyParsing } from './phases/host_style_property_pars
|
|
|
27
29
|
import { phaseI18nConstCollection } from './phases/i18n_const_collection';
|
|
28
30
|
import { phaseI18nMessageExtraction } from './phases/i18n_message_extraction';
|
|
29
31
|
import { phaseI18nTextExtraction } from './phases/i18n_text_extraction';
|
|
32
|
+
import { phaseIcuExtraction } from './phases/icu_extraction';
|
|
30
33
|
import { phaseLocalRefs } from './phases/local_refs';
|
|
31
34
|
import { phaseNamespace } from './phases/namespace';
|
|
32
35
|
import { phaseNaming } from './phases/naming';
|
|
@@ -40,7 +43,6 @@ import { phaseRemoveContentSelectors } from './phases/phase_remove_content_selec
|
|
|
40
43
|
import { phasePipeCreation } from './phases/pipe_creation';
|
|
41
44
|
import { phasePipeVariadic } from './phases/pipe_variadic';
|
|
42
45
|
import { phasePropagateI18nBlocks } from './phases/propagate_i18n_blocks';
|
|
43
|
-
import { phasePropagateI18nPlaceholders } from './phases/propagate_i18n_placeholders';
|
|
44
46
|
import { phasePureFunctionExtraction } from './phases/pure_function_extraction';
|
|
45
47
|
import { phasePureLiteralStructures } from './phases/pure_literal_structures';
|
|
46
48
|
import { phaseReify } from './phases/reify';
|
|
@@ -56,6 +58,10 @@ import { phaseStyleBindingSpecialization } from './phases/style_binding_speciali
|
|
|
56
58
|
import { phaseTemporaryVariables } from './phases/temporary_variables';
|
|
57
59
|
import { phaseVarCounting } from './phases/var_counting';
|
|
58
60
|
import { phaseVariableOptimization } from './phases/variable_optimization';
|
|
61
|
+
import { phaseWrapIcus } from './phases/wrap_icus';
|
|
62
|
+
import { phaseTrackVariables } from './phases/track_variables';
|
|
63
|
+
import { phaseTrackFnGeneration } from './phases/track_fn_generation';
|
|
64
|
+
import { phaseTrackFnOptimization } from './phases/track_fn_optimization';
|
|
59
65
|
const phases = [
|
|
60
66
|
{ kind: Kind.Tmpl, fn: phaseRemoveContentSelectors },
|
|
61
67
|
{ kind: Kind.Host, fn: phaseHostStylePropertyParsing },
|
|
@@ -63,12 +69,16 @@ const phases = [
|
|
|
63
69
|
{ kind: Kind.Both, fn: phaseStyleBindingSpecialization },
|
|
64
70
|
{ kind: Kind.Both, fn: phaseBindingSpecialization },
|
|
65
71
|
{ kind: Kind.Tmpl, fn: phasePropagateI18nBlocks },
|
|
72
|
+
{ kind: Kind.Tmpl, fn: phaseWrapIcus },
|
|
66
73
|
{ kind: Kind.Both, fn: phaseAttributeExtraction },
|
|
67
74
|
{ kind: Kind.Both, fn: phaseParseExtractedStyles },
|
|
68
75
|
{ kind: Kind.Tmpl, fn: phaseRemoveEmptyBindings },
|
|
76
|
+
{ kind: Kind.Both, fn: phaseCollapseSingletonInterpolations },
|
|
77
|
+
{ kind: Kind.Both, fn: phaseOrdering },
|
|
69
78
|
{ kind: Kind.Tmpl, fn: phaseConditionals },
|
|
70
79
|
{ kind: Kind.Tmpl, fn: phasePipeCreation },
|
|
71
80
|
{ kind: Kind.Tmpl, fn: phaseI18nTextExtraction },
|
|
81
|
+
{ kind: Kind.Tmpl, fn: phaseIcuExtraction },
|
|
72
82
|
{ kind: Kind.Tmpl, fn: phaseApplyI18nExpressions },
|
|
73
83
|
{ kind: Kind.Tmpl, fn: phasePipeVariadic },
|
|
74
84
|
{ kind: Kind.Both, fn: phasePureLiteralStructures },
|
|
@@ -77,7 +87,10 @@ const phases = [
|
|
|
77
87
|
{ kind: Kind.Tmpl, fn: phaseSaveRestoreView },
|
|
78
88
|
{ kind: Kind.Tmpl, fn: phaseFindAnyCasts },
|
|
79
89
|
{ kind: Kind.Both, fn: phaseResolveDollarEvent },
|
|
90
|
+
{ kind: Kind.Tmpl, fn: phaseRepeaterDerivedVars },
|
|
91
|
+
{ kind: Kind.Tmpl, fn: phaseTrackVariables },
|
|
80
92
|
{ kind: Kind.Both, fn: phaseResolveNames },
|
|
93
|
+
{ kind: Kind.Tmpl, fn: phaseTrackFnOptimization },
|
|
81
94
|
{ kind: Kind.Both, fn: phaseResolveContexts },
|
|
82
95
|
{ kind: Kind.Tmpl, fn: phaseResolveSanitizers },
|
|
83
96
|
{ kind: Kind.Tmpl, fn: phaseLocalRefs },
|
|
@@ -86,7 +99,7 @@ const phases = [
|
|
|
86
99
|
{ kind: Kind.Both, fn: phaseTemporaryVariables },
|
|
87
100
|
{ kind: Kind.Tmpl, fn: phaseSlotAllocation },
|
|
88
101
|
{ kind: Kind.Tmpl, fn: phaseResolveI18nPlaceholders },
|
|
89
|
-
{ kind: Kind.Tmpl, fn:
|
|
102
|
+
{ kind: Kind.Tmpl, fn: phaseTrackFnGeneration },
|
|
90
103
|
{ kind: Kind.Tmpl, fn: phaseI18nMessageExtraction },
|
|
91
104
|
{ kind: Kind.Tmpl, fn: phaseI18nConstCollection },
|
|
92
105
|
{ kind: Kind.Tmpl, fn: phaseConstTraitCollection },
|
|
@@ -101,8 +114,6 @@ const phases = [
|
|
|
101
114
|
{ kind: Kind.Tmpl, fn: phaseEmptyElements },
|
|
102
115
|
{ kind: Kind.Tmpl, fn: phaseNonbindable },
|
|
103
116
|
{ kind: Kind.Both, fn: phasePureFunctionExtraction },
|
|
104
|
-
{ kind: Kind.Tmpl, fn: phaseAlignPipeVariadicVarOffset },
|
|
105
|
-
{ kind: Kind.Both, fn: phaseOrdering },
|
|
106
117
|
{ kind: Kind.Both, fn: phaseReify },
|
|
107
118
|
{ kind: Kind.Both, fn: phaseChaining },
|
|
108
119
|
];
|
|
@@ -212,4 +223,4 @@ export function emitHostBindingFunction(job) {
|
|
|
212
223
|
],
|
|
213
224
|
/* type */ undefined, /* sourceSpan */ undefined, job.root.fnName);
|
|
214
225
|
}
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvZW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssQ0FBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXZELE9BQU8sS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTVCLE9BQU8sRUFBaUIsa0JBQWtCLElBQUksSUFBSSxFQUF5RixNQUFNLGVBQWUsQ0FBQztBQUVqSyxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxF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RSxFQUFFLEVBQUUsK0JBQStCLEVBQUM7SUFDdEQsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUM7SUFDakQsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsd0JBQXdCLEVBQUM7SUFDL0MsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsd0JBQXdCLEVBQUM7SUFDL0MsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUseUJBQXlCLEVBQUM7SUFDaEQsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsd0JBQXdCLEVBQUM7SUFDL0MsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUM7SUFDeEMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUM7SUFDeEMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsdUJBQXVCLEVBQUM7SUFDOUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUseUJBQXlCLEVBQUM7SUFDaEQsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUM7SUFDeEMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUM7SUFDakQsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUM7SUFDakQsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsc0JBQXNCLEVBQUM7SUFDN0MsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsb0JBQW9C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QUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNyQztJQUNELE1BQU0sZ0JBQWdCLEdBQWtCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ2hDLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDBFQUNaLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzQjtRQUNELGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDckM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUNQO1FBQ0UsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0tBQ3JCLEVBQ0Q7UUFDRSxHQUFHLFVBQVU7UUFDYixHQUFHLFVBQVU7S0FDZDtJQUNELFVBQVUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0NvbnN0YW50UG9vbH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRfcG9vbCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi9pcic7XG5cbmltcG9ydCB7Q29tcGlsYXRpb25Kb2IsIENvbXBpbGF0aW9uSm9iS2luZCBhcyBLaW5kLCB0eXBlIENvbXBvbmVudENvbXBpbGF0aW9uSm9iLCB0eXBlIEhvc3RCaW5kaW5nQ29tcGlsYXRpb25Kb2IsIHR5cGUgVmlld0NvbXBpbGF0aW9uVW5pdH0gZnJvbSAnLi9jb21waWxhdGlvbic7XG5cbmltcG9ydCB7cGhhc2VBbGlnblBpcGVWYXJpYWRpY1Zhck9mZnNldH0gZnJvbSAnLi9waGFzZXMvYWxpZ25fcGlwZV92YXJpYWRpY192YXJfb2Zmc2V0JztcbmltcG9ydCB7cGhhc2VGaW5kQW55Q2FzdHN9IGZyb20gJy4vcGhhc2VzL2FueV9jYXN0JztcbmltcG9ydCB7cGhhc2VBcHBseUkxOG5FeHByZXNzaW9uc30gZnJvbSAnLi9waGFzZXMvYXBwbHlfaTE4bl9leHByZXNzaW9ucyc7XG5pbXBvcnQge3BoYXNlQXNzaWduSTE4blNsb3REZXBlbmRlbmNpZXN9IGZyb20gJy4vcGhhc2VzL2Fzc2lnbl9pMThuX3Nsb3RfZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7cGhhc2VBdHRyaWJ1dGVFeHRyYWN0aW9ufSBmcm9tICcuL3BoYXNlcy9hdHRyaWJ1dGVfZXh0cmFjdGlvbic7XG5pbXBvcnQge3BoYXNlQmluZGluZ1NwZWNpYWxpemF0aW9ufSBmcm9tICcuL3BoYXNlcy9iaW5kaW5nX3NwZWNpYWxpemF0aW9uJztcbmltcG9ydCB7cGhhc2VDaGFpbmluZ30gZnJvbSAnLi9waGFzZXMvY2hhaW5pbmcnO1xuaW1wb3J0IHtwaGFzZUNvbmRpdGlvbmFsc30gZnJvbSAnLi9waGFzZXMvY29uZGl0aW9uYWxzJztcbmltcG9ydCB7cGhhc2VDb25zdENvbGxlY3Rpb259IGZyb20gJy4vcGhhc2VzL2NvbnN0X2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtwaGFzZUVtcHR5RWxlbWVudHN9IGZyb20gJy4vcGhhc2VzL2VtcHR5X2VsZW1lbnRzJztcbmltcG9ydCB7cGhhc2VFeHBhbmRTYWZlUmVhZHN9IGZyb20gJy4vcGhhc2VzL2V4cGFuZF9zYWZlX3JlYWRzJztcbmltcG9ydCB7cGhhc2VHZW5lcmF0ZUFkdmFuY2V9IGZyb20gJy4vcGhhc2VzL2dlbmVyYXRlX2FkdmFuY2UnO1xuaW1wb3J0IHtwaGFzZUdlbmVyYXRlUHJvamVjdGlvbkRlZn0gZnJvbSAnLi9waGFzZXMvZ2VuZXJhdGVfcHJvamVjdGlvbl9kZWYnO1xuaW1wb3J0IHtwaGFzZUdlbmVyYXRlVmFyaWFibGVzfSBmcm9tICcuL3BoYXNlcy9nZW5lcmF0ZV92YXJpYWJsZXMnO1xuaW1wb3J0IHtwaGFzZUNvbnN0VHJhaXRDb2xsZWN0aW9ufSBmcm9tICcuL3BoYXNlcy9oYXNfY29uc3RfdHJhaXRfY29sbGVjdGlvbic7XG5pbXBvcnQge3BoYXNlSG9zdFN0eWxlUHJvcGVydHlQYXJzaW5nfSBmcm9tICcuL3BoYXNlcy9ob3N0X3N0eWxlX3Byb3BlcnR5X3BhcnNpbmcnO1xuaW1wb3J0IHtwaGFzZUkxOG5Db25zdENvbGxlY3Rpb259IGZyb20gJy4vcGhhc2VzL2kxOG5fY29uc3RfY29sbGVjdGlvbic7XG5pbXBvcnQge3BoYXNlSTE4bk1lc3NhZ2VFeHRyYWN0aW9ufSBmcm9tICcuL3BoYXNlcy9pMThuX21lc3NhZ2VfZXh0cmFjdGlvbic7XG5pbXBvcnQge3BoYXNlSTE4blRleHRFeHRyYWN0aW9ufSBmcm9tICcuL3BoYXNlcy9pMThuX3RleHRfZXh0cmFjdGlvbic7XG5pbXBvcnQge3BoYXNlTG9jYWxSZWZzfSBmcm9tICcuL3BoYXNlcy9sb2NhbF9yZWZzJztcbmltcG9ydCB7cGhhc2VOYW1lc3BhY2V9IGZyb20gJy4vcGhhc2VzL25hbWVzcGFjZSc7XG5pbXBvcnQge3BoYXNlTmFtaW5nfSBmcm9tICcuL3BoYXNlcy9uYW1pbmcnO1xuaW1wb3J0IHtwaGFzZU1lcmdlTmV4dENvbnRleHR9IGZyb20gJy4vcGhhc2VzL25leHRfY29udGV4dF9tZXJnaW5nJztcbmltcG9ydCB7cGhhc2VOZ0NvbnRhaW5lcn0gZnJvbSAnLi9waGFzZXMvbmdfY29udGFpbmVyJztcbmltcG9ydCB7cGhhc2VOb25iaW5kYWJsZX0gZnJvbSAnLi9waGFzZXMvbm9uYmluZGFibGUnO1xuaW1wb3J0IHtwaGFzZU51bGxpc2hDb2FsZXNjaW5nfSBmcm9tICcuL3BoYXNlcy9udWxsaXNoX2NvYWxlc2NpbmcnO1xuaW1wb3J0IHtwaGFzZU9yZGVyaW5nfSBmcm9tICcuL3BoYXNlcy9vcmRlcmluZyc7XG5pbXBvcnQge3BoYXNlUGFyc2VFeHRyYWN0ZWRTdHlsZXN9IGZyb20gJy4vcGhhc2VzL3BhcnNlX2V4dHJhY3RlZF9zdHlsZXMnO1xuaW1wb3J0IHtwaGFzZVJlbW92ZUNvbnRlbnRTZWxlY3RvcnN9IGZyb20gJy4vcGhhc2VzL3BoYXNlX3JlbW92ZV9jb250ZW50X3NlbGVjdG9ycyc7XG5pbXBvcnQge3BoYXNlUGlwZUNyZWF0aW9ufSBmcm9tICcuL3BoYXNlcy9waXBlX2NyZWF0aW9uJztcbmltcG9ydCB7cGhhc2VQaXBlVmFyaWFkaWN9IGZyb20gJy4vcGhhc2VzL3BpcGVfdmFyaWFkaWMnO1xuaW1wb3J0IHtwaGFzZVByb3BhZ2F0ZUkxOG5CbG9ja3N9IGZyb20gJy4vcGhhc2VzL3Byb3BhZ2F0ZV9pMThuX2Jsb2Nrcyc7XG5pbXBvcnQge3BoYXNlUHJvcGFnYXRlSTE4blBsYWNlaG9sZGVyc30gZnJvbSAnLi9waGFzZXMvcHJvcGFnYXRlX2kxOG5fcGxhY2Vob2xkZXJzJztcbmltcG9ydCB7cGhhc2VQdXJlRnVuY3Rpb25FeHRyYWN0aW9ufSBmcm9tICcuL3BoYXNlcy9wdXJlX2Z1bmN0aW9uX2V4dHJhY3Rpb24nO1xuaW1wb3J0IHtwaGFzZVB1cmVMaXRlcmFsU3RydWN0dXJlc30gZnJvbSAnLi9waGFzZXMvcHVyZV9saXRlcmFsX3N0cnVjdHVyZXMnO1xuaW1wb3J0IHtwaGFzZVJlaWZ5fSBmcm9tICcuL3BoYXNlcy9yZWlmeSc7XG5pbXBvcnQge3BoYXNlUmVtb3ZlRW1wdHlCaW5kaW5nc30gZnJvbSAnLi9waGFzZXMvcmVtb3ZlX2VtcHR5X2JpbmRpbmdzJztcbmltcG9ydCB7cGhhc2VSZXNvbHZlQ29udGV4dHN9IGZyb20gJy4vcGhhc2VzL3Jlc29sdmVfY29udGV4dHMnO1xuaW1wb3J0IHtwaGFzZVJlc29sdmVEb2xsYXJFdmVudH0gZnJvbSAnLi9waGFzZXMvcmVzb2x2ZV9kb2xsYXJfZXZlbnQnO1xuaW1wb3J0IHtwaGFzZVJlc29sdmVJMThuUGxhY2Vob2xkZXJzfSBmcm9tICcuL3BoYXNlcy9yZXNvbHZlX2kxOG5fcGxhY2Vob2xkZXJzJztcbmltcG9ydCB7cGhhc2VSZXNvbHZlTmFtZXN9IGZyb20gJy4vcGhhc2VzL3Jlc29sdmVfbmFtZXMnO1xuaW1wb3J0IHtwaGFzZVJlc29sdmVTYW5pdGl6ZXJzfSBmcm9tICcuL3BoYXNlcy9yZXNvbHZlX3Nhbml0aXplcnMnO1xuaW1wb3J0IHtwaGFzZVNhdmVSZXN0b3JlVmlld30gZnJvbSAnLi9waGFzZXMvc2F2ZV9yZXN0b3JlX3ZpZXcnO1xuaW1wb3J0IHtwaGFzZVNsb3RBbGxvY2F0aW9ufSBmcm9tICcuL3BoYXNlcy9zbG90X2FsbG9jYXRpb24nO1xuaW1wb3J0IHtwaGFzZVN0eWxlQmluZGluZ1NwZWNpYWxpemF0aW9ufSBmcm9tICcuL3BoYXNlcy9zdHlsZV9iaW5kaW5nX3NwZWNpYWxpemF0aW9uJztcbmltcG9ydCB7cGhhc2VUZW1wb3JhcnlWYXJpYWJsZXN9IGZyb20gJy4vcGhhc2VzL3RlbXBvcmFyeV92YXJpYWJsZXMnO1xuaW1wb3J0IHtwaGFzZVZhckNvdW50aW5nfSBmcm9tICcuL3BoYXNlcy92YXJfY291bnRpbmcnO1xuaW1wb3J0IHtwaGFzZVZhcmlhYmxlT3B0aW1pemF0aW9ufSBmcm9tICcuL3BoYXNlcy92YXJpYWJsZV9vcHRpbWl6YXRpb24nO1xuXG50eXBlIFBoYXNlID0ge1xuICBmbjogKGpvYjogQ29tcGlsYXRpb25Kb2IpID0+IHZvaWQ7IGtpbmQ6IEtpbmQuQm90aCB8IEtpbmQuSG9zdCB8IEtpbmQuVG1wbDtcbn18e1xuICBmbjogKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpID0+IHZvaWQ7XG4gIGtpbmQ6IEtpbmQuVG1wbDtcbn1cbnx7XG4gIGZuOiAoam9iOiBIb3N0QmluZGluZ0NvbXBpbGF0aW9uSm9iKSA9PiB2b2lkO1xuICBraW5kOiBLaW5kLkhvc3Q7XG59O1xuXG5jb25zdCBwaGFzZXM6IFBoYXNlW10gPSBbXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZVJlbW92ZUNvbnRlbnRTZWxlY3RvcnN9LFxuICB7a2luZDogS2luZC5Ib3N0LCBmbjogcGhhc2VIb3N0U3R5bGVQcm9wZXJ0eVBhcnNpbmd9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VOYW1lc3BhY2V9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VTdHlsZUJpbmRpbmdTcGVjaWFsaXphdGlvbn0sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZUJpbmRpbmdTcGVjaWFsaXphdGlvbn0sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZVByb3BhZ2F0ZUkxOG5CbG9ja3N9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VBdHRyaWJ1dGVFeHRyYWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlUGFyc2VFeHRyYWN0ZWRTdHlsZXN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VSZW1vdmVFbXB0eUJpbmRpbmdzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlQ29uZGl0aW9uYWxzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlUGlwZUNyZWF0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlSTE4blRleHRFeHRyYWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlQXBwbHlJMThuRXhwcmVzc2lvbnN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VQaXBlVmFyaWFkaWN9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VQdXJlTGl0ZXJhbFN0cnVjdHVyZXN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VHZW5lcmF0ZVByb2plY3Rpb25EZWZ9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VHZW5lcmF0ZVZhcmlhYmxlc30sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZVNhdmVSZXN0b3JlVmlld30sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZUZpbmRBbnlDYXN0c30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZVJlc29sdmVEb2xsYXJFdmVudH0sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZVJlc29sdmVOYW1lc30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZVJlc29sdmVDb250ZXh0c30sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZVJlc29sdmVTYW5pdGl6ZXJzfSwgIC8vIFRPRE86IHJ1biBpbiBib3RoXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZUxvY2FsUmVmc30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZU51bGxpc2hDb2FsZXNjaW5nfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlRXhwYW5kU2FmZVJlYWRzfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlVGVtcG9yYXJ5VmFyaWFibGVzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlU2xvdEFsbG9jYXRpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VSZXNvbHZlSTE4blBsYWNlaG9sZGVyc30sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZVByb3BhZ2F0ZUkxOG5QbGFjZWhvbGRlcnN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VJMThuTWVzc2FnZUV4dHJhY3Rpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VJMThuQ29uc3RDb2xsZWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlQ29uc3RUcmFpdENvbGxlY3Rpb259LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VDb25zdENvbGxlY3Rpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VBc3NpZ25JMThuU2xvdERlcGVuZGVuY2llc30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZVZhckNvdW50aW5nfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlR2VuZXJhdGVBZHZhbmNlfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlVmFyaWFibGVPcHRpbWl6YXRpb259LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VOYW1pbmd9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VNZXJnZU5leHRDb250ZXh0fSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlTmdDb250YWluZXJ9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VFbXB0eUVsZW1lbnRzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlTm9uYmluZGFibGV9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VQdXJlRnVuY3Rpb25FeHRyYWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlQWxpZ25QaXBlVmFyaWFkaWNWYXJPZmZzZXR9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VPcmRlcmluZ30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZVJlaWZ5fSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlQ2hhaW5pbmd9LFxuXTtcblxuLyoqXG4gKiBSdW4gYWxsIHRyYW5zZm9ybWF0aW9uIHBoYXNlcyBpbiB0aGUgY29ycmVjdCBvcmRlciBhZ2FpbnN0IGEgY29tcGlsYXRpb24gam9iLiBBZnRlciB0aGlzXG4gKiBwcm9jZXNzaW5nLCB0aGUgY29tcGlsYXRpb24gc2hvdWxkIGJlIGluIGEgc3RhdGUgd2hlcmUgaXQgY2FuIGJlIGVtaXR0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm0oam9iOiBDb21waWxhdGlvbkpvYiwga2luZDogS2luZCk6IHZvaWQge1xuICBmb3IgKGNvbnN0IHBoYXNlIG9mIHBoYXNlcykge1xuICAgIGlmIChwaGFzZS5raW5kID09PSBraW5kIHx8IHBoYXNlLmtpbmQgPT09IEtpbmQuQm90aCkge1xuICAgICAgLy8gVGhlIHR5cGUgb2YgYFBoYXNlYCBhYm92ZSBlbnN1cmVzIGl0IGlzIGltcG9zc2libGUgdG8gY2FsbCBhIHBoYXNlIHRoYXQgZG9lc24ndCBzdXBwb3J0IHRoZVxuICAgICAgLy8gam9iIGtpbmQuXG4gICAgICBwaGFzZS5mbihqb2IgYXMgQ29tcGlsYXRpb25Kb2IgJiBDb21wb25lbnRDb21waWxhdGlvbkpvYiAmIEhvc3RCaW5kaW5nQ29tcGlsYXRpb25Kb2IpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvbXBpbGUgYWxsIHZpZXdzIGluIHRoZSBnaXZlbiBgQ29tcG9uZW50Q29tcGlsYXRpb25gIGludG8gdGhlIGZpbmFsIHRlbXBsYXRlIGZ1bmN0aW9uLCB3aGljaCBtYXlcbiAqIHJlZmVyZW5jZSBjb25zdGFudHMgZGVmaW5lZCBpbiBhIGBDb25zdGFudFBvb2xgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdFRlbXBsYXRlRm4odHBsOiBDb21wb25lbnRDb21waWxhdGlvbkpvYiwgcG9vbDogQ29uc3RhbnRQb29sKTogby5GdW5jdGlvbkV4cHIge1xuICBjb25zdCByb290Rm4gPSBlbWl0Vmlldyh0cGwucm9vdCk7XG4gIGVtaXRDaGlsZFZpZXdzKHRwbC5yb290LCBwb29sKTtcbiAgcmV0dXJuIHJvb3RGbjtcbn1cblxuZnVuY3Rpb24gZW1pdENoaWxkVmlld3MocGFyZW50OiBWaWV3Q29tcGlsYXRpb25Vbml0LCBwb29sOiBDb25zdGFudFBvb2wpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIHBhcmVudC5qb2IudW5pdHMpIHtcbiAgICBpZiAodW5pdC5wYXJlbnQgIT09IHBhcmVudC54cmVmKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBDaGlsZCB2aWV3cyBhcmUgZW1pdHRlZCBkZXB0aC1maXJzdC5cbiAgICBlbWl0Q2hpbGRWaWV3cyh1bml0LCBwb29sKTtcblxuICAgIGNvbnN0IHZpZXdGbiA9IGVtaXRWaWV3KHVuaXQpO1xuICAgIHBvb2wuc3RhdGVtZW50cy5wdXNoKHZpZXdGbi50b0RlY2xTdG10KHZpZXdGbi5uYW1lISkpO1xuICB9XG59XG5cbi8qKlxuICogRW1pdCBhIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciBhbiBpbmRpdmlkdWFsIGBWaWV3Q29tcGlsYXRpb25gICh3aGljaCBtYXkgYmUgZWl0aGVyIHRoZSByb290IHZpZXdcbiAqIG9yIGFuIGVtYmVkZGVkIHZpZXcpLlxuICovXG5mdW5jdGlvbiBlbWl0Vmlldyh2aWV3OiBWaWV3Q29tcGlsYXRpb25Vbml0KTogby5GdW5jdGlvbkV4cHIge1xuICBpZiAodmlldy5mbk5hbWUgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiB2aWV3ICR7dmlldy54cmVmfSBpcyB1bm5hbWVkYCk7XG4gIH1cblxuICBjb25zdCBjcmVhdGVTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG4gIGZvciAoY29uc3Qgb3Agb2Ygdmlldy5jcmVhdGUpIHtcbiAgICBpZiAob3Aua2luZCAhPT0gaXIuT3BLaW5kLlN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb25FcnJvcjogZXhwZWN0ZWQgYWxsIGNyZWF0ZSBvcHMgdG8gaGF2ZSBiZWVuIGNvbXBpbGVkLCBidXQgZ290ICR7XG4gICAgICAgICAgaXIuT3BLaW5kW29wLmtpbmRdfWApO1xuICAgIH1cbiAgICBjcmVhdGVTdGF0ZW1lbnRzLnB1c2gob3Auc3RhdGVtZW50KTtcbiAgfVxuICBjb25zdCB1cGRhdGVTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG4gIGZvciAoY29uc3Qgb3Agb2Ygdmlldy51cGRhdGUpIHtcbiAgICBpZiAob3Aua2luZCAhPT0gaXIuT3BLaW5kLlN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb25FcnJvcjogZXhwZWN0ZWQgYWxsIHVwZGF0ZSBvcHMgdG8gaGF2ZSBiZWVuIGNvbXBpbGVkLCBidXQgZ290ICR7XG4gICAgICAgICAgaXIuT3BLaW5kW29wLmtpbmRdfWApO1xuICAgIH1cbiAgICB1cGRhdGVTdGF0ZW1lbnRzLnB1c2gob3Auc3RhdGVtZW50KTtcbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZUNvbmQgPSBtYXliZUdlbmVyYXRlUmZCbG9jaygxLCBjcmVhdGVTdGF0ZW1lbnRzKTtcbiAgY29uc3QgdXBkYXRlQ29uZCA9IG1heWJlR2VuZXJhdGVSZkJsb2NrKDIsIHVwZGF0ZVN0YXRlbWVudHMpO1xuICByZXR1cm4gby5mbihcbiAgICAgIFtcbiAgICAgICAgbmV3IG8uRm5QYXJhbSgncmYnKSxcbiAgICAgICAgbmV3IG8uRm5QYXJhbSgnY3R4JyksXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAuLi5jcmVhdGVDb25kLFxuICAgICAgICAuLi51cGRhdGVDb25kLFxuICAgICAgXSxcbiAgICAgIC8qIHR5cGUgKi8gdW5kZWZpbmVkLCAvKiBzb3VyY2VTcGFuICovIHVuZGVmaW5lZCwgdmlldy5mbk5hbWUpO1xufVxuXG5mdW5jdGlvbiBtYXliZUdlbmVyYXRlUmZCbG9jayhmbGFnOiBudW1iZXIsIHN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10pOiBvLlN0YXRlbWVudFtdIHtcbiAgaWYgKHN0YXRlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBvLmlmU3RtdChcbiAgICAgICAgbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKG8uQmluYXJ5T3BlcmF0b3IuQml0d2lzZUFuZCwgby52YXJpYWJsZSgncmYnKSwgby5saXRlcmFsKGZsYWcpKSxcbiAgICAgICAgc3RhdGVtZW50cyksXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbWl0SG9zdEJpbmRpbmdGdW5jdGlvbihqb2I6IEhvc3RCaW5kaW5nQ29tcGlsYXRpb25Kb2IpOiBvLkZ1bmN0aW9uRXhwcnxudWxsIHtcbiAgaWYgKGpvYi5yb290LmZuTmFtZSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IGhvc3QgYmluZGluZyBmdW5jdGlvbiBpcyB1bm5hbWVkYCk7XG4gIH1cblxuICBjb25zdCBjcmVhdGVTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG4gIGZvciAoY29uc3Qgb3Agb2Ygam9iLnJvb3QuY3JlYXRlKSB7XG4gICAgaWYgKG9wLmtpbmQgIT09IGlyLk9wS2luZC5TdGF0ZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IGV4cGVjdGVkIGFsbCBjcmVhdGUgb3BzIHRvIGhhdmUgYmVlbiBjb21waWxlZCwgYnV0IGdvdCAke1xuICAgICAgICAgIGlyLk9wS2luZFtvcC5raW5kXX1gKTtcbiAgICB9XG4gICAgY3JlYXRlU3RhdGVtZW50cy5wdXNoKG9wLnN0YXRlbWVudCk7XG4gIH1cbiAgY29uc3QgdXBkYXRlU3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG9wIG9mIGpvYi5yb290LnVwZGF0ZSkge1xuICAgIGlmIChvcC5raW5kICE9PSBpci5PcEtpbmQuU3RhdGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBleHBlY3RlZCBhbGwgdXBkYXRlIG9wcyB0byBoYXZlIGJlZW4gY29tcGlsZWQsIGJ1dCBnb3QgJHtcbiAgICAgICAgICBpci5PcEtpbmRbb3Aua2luZF19YCk7XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlbWVudHMucHVzaChvcC5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgaWYgKGNyZWF0ZVN0YXRlbWVudHMubGVuZ3RoID09PSAwICYmIHVwZGF0ZVN0YXRlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjcmVhdGVDb25kID0gbWF5YmVHZW5lcmF0ZVJmQmxvY2soMSwgY3JlYXRlU3RhdGVtZW50cyk7XG4gIGNvbnN0IHVwZGF0ZUNvbmQgPSBtYXliZUdlbmVyYXRlUmZCbG9jaygyLCB1cGRhdGVTdGF0ZW1lbnRzKTtcbiAgcmV0dXJuIG8uZm4oXG4gICAgICBbXG4gICAgICAgIG5ldyBvLkZuUGFyYW0oJ3JmJyksXG4gICAgICAgIG5ldyBvLkZuUGFyYW0oJ2N0eCcpLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgLi4uY3JlYXRlQ29uZCxcbiAgICAgICAgLi4udXBkYXRlQ29uZCxcbiAgICAgIF0sXG4gICAgICAvKiB0eXBlICovIHVuZGVmaW5lZCwgLyogc291cmNlU3BhbiAqLyB1bmRlZmluZWQsIGpvYi5yb290LmZuTmFtZSk7XG59XG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvZW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxLQUFLLENBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QixPQUFPLEVBQWlCLGtCQUFrQixJQUFJLElBQUksRUFBeUYsTUFBTSxlQUFlLENBQUM7QUFFakssT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDdkYsT0FBTyxFQUFDLG9DQUFvQyxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8s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Q0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLHVCQUF1QixFQUFDO0lBQzlDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFDO0lBQ3pDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFDO0lBQ2hELEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFDO0lBQ3hDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLDBCQUEwQixFQUFDO0lBQ2pELEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLDBCQUEwQixFQUFDO0lBQ2pELEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixFQUFDO0lBQzdDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLG9CQUFvQixFQUFDO0lBQzNDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFDO0lBQ3hDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLHVCQUF1QixFQUFDO0lBQzlDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFDO0lBQy9DLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixFQUFDO0lBQzFDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFDO0lBQ3hDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFDO0lBQy9DLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFB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S0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUNQO1FBQ0UsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0tBQ3JCLEVBQ0Q7UUFDRSxHQUFHLFVBQVU7UUFDYixHQUFHLFVBQVU7S0FDZDtJQUNELFVBQVUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtDb25zdGFudFBvb2x9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50X3Bvb2wnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vaXInO1xuXG5pbXBvcnQge0NvbXBpbGF0aW9uSm9iLCBDb21waWxhdGlvbkpvYktpbmQgYXMgS2luZCwgdHlwZSBDb21wb25lbnRDb21waWxhdGlvbkpvYiwgdHlwZSBIb3N0QmluZGluZ0NvbXBpbGF0aW9uSm9iLCB0eXBlIFZpZXdDb21waWxhdGlvblVuaXR9IGZyb20gJy4vY29tcGlsYXRpb24nO1xuXG5pbXBvcnQge3BoYXNlRmluZEFueUNhc3RzfSBmcm9tICcuL3BoYXNlcy9hbnlfY2FzdCc7XG5pbXBvcnQge3BoYXNlQXBwbHlJMThuRXhwcmVzc2lvbnN9IGZyb20gJy4vcGhhc2VzL2FwcGx5X2kxOG5fZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHtwaGFzZUFzc2lnbkkxOG5TbG90RGVwZW5kZW5jaWVzfSBmcm9tICcuL3BoYXNlcy9hc3NpZ25faTE4bl9zbG90X2RlcGVuZGVuY2llcyc7XG5pbXBvcnQge3BoYXNlQ29sbGFwc2VTaW5nbGV0b25JbnRlcnBvbGF0aW9uc30gZnJvbSAnLi9waGFzZXMvY29sbGFwc2Vfc2luZ2xldG9uX2ludGVycG9sYXRpb25zJztcbmltcG9ydCB7cGhhc2VBdHRyaWJ1dGVFeHRyYWN0aW9ufSBmcm9tICcuL3BoYXNlcy9hdHRyaWJ1dGVfZXh0cmFjdGlvbic7XG5pbXBvcnQge3BoYXNlQmluZGluZ1NwZWNpYWxpemF0aW9ufSBmcm9tICcuL3BoYXNlcy9iaW5kaW5nX3NwZWNpYWxpemF0aW9uJztcbmltcG9ydCB7cGhhc2VDaGFpbmluZ30gZnJvbSAnLi9waGFzZXMvY2hhaW5pbmcnO1xuaW1wb3J0IHtwaGFzZUNvbmRpdGlvbmFsc30gZnJvbSAnLi9waGFzZXMvY29uZGl0aW9uYWxzJztcbmltcG9ydCB7cGhhc2VDb25zdENvbGxlY3Rpb259IGZyb20gJy4vcGhhc2VzL2NvbnN0X2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtwaGFzZUVtcHR5RWxlbWVudHN9IGZyb20gJy4vcGhhc2VzL2VtcHR5X2VsZW1lbnRzJztcbmltcG9ydCB7cGhhc2VFeHBhbmRTYWZlUmVhZHN9IGZyb20gJy4vcGhhc2VzL2V4cGFuZF9zYWZlX3JlYWRzJztcbmltcG9ydCB7cGhhc2VSZXBlYXRlckRlcml2ZWRWYXJzfSBmcm9tICcuL3BoYXNlcy9yZXBlYXRlcl9kZXJpdmVkX3ZhcnMnO1xuaW1wb3J0IHtwaGFzZUdlbmVyYXRlQWR2YW5jZX0gZnJvbSAnLi9waGFzZXMvZ2VuZXJhdGVfYWR2YW5jZSc7XG5pbXBvcnQge3BoYXNlR2VuZXJhdGVQcm9qZWN0aW9uRGVmfSBmcm9tICcuL3BoYXNlcy9nZW5lcmF0ZV9wcm9qZWN0aW9uX2RlZic7XG5pbXBvcnQge3BoYXNlR2VuZXJhdGVWYXJpYWJsZXN9IGZyb20gJy4vcGhhc2VzL2dlbmVyYXRlX3ZhcmlhYmxlcyc7XG5pbXBvcnQge3BoYXNlQ29uc3RUcmFpdENvbGxlY3Rpb259IGZyb20gJy4vcGhhc2VzL2hhc19jb25zdF90cmFpdF9jb2xsZWN0aW9uJztcbmltcG9ydCB7cGhhc2VIb3N0U3R5bGVQcm9wZXJ0eVBhcnNpbmd9IGZyb20gJy4vcGhhc2VzL2hvc3Rfc3R5bGVfcHJvcGVydHlfcGFyc2luZyc7XG5pbXBvcnQge3BoYXNlSTE4bkNvbnN0Q29sbGVjdGlvbn0gZnJvbSAnLi9waGFzZXMvaTE4bl9jb25zdF9jb2xsZWN0aW9uJztcbmltcG9ydCB7cGhhc2VJMThuTWVzc2FnZUV4dHJhY3Rpb259IGZyb20gJy4vcGhhc2VzL2kxOG5fbWVzc2FnZV9leHRyYWN0aW9uJztcbmltcG9ydCB7cGhhc2VJMThuVGV4dEV4dHJhY3Rpb259IGZyb20gJy4vcGhhc2VzL2kxOG5fdGV4dF9leHRyYWN0aW9uJztcbmltcG9ydCB7cGhhc2VJY3VFeHRyYWN0aW9ufSBmcm9tICcuL3BoYXNlcy9pY3VfZXh0cmFjdGlvbic7XG5pbXBvcnQge3BoYXNlTG9jYWxSZWZzfSBmcm9tICcuL3BoYXNlcy9sb2NhbF9yZWZzJztcbmltcG9ydCB7cGhhc2VOYW1lc3BhY2V9IGZyb20gJy4vcGhhc2VzL25hbWVzcGFjZSc7XG5pbXBvcnQge3BoYXNlTmFtaW5nfSBmcm9tICcuL3BoYXNlcy9uYW1pbmcnO1xuaW1wb3J0IHtwaGFzZU1lcmdlTmV4dENvbnRleHR9IGZyb20gJy4vcGhhc2VzL25leHRfY29udGV4dF9tZXJnaW5nJztcbmltcG9ydCB7cGhhc2VOZ0NvbnRhaW5lcn0gZnJvbSAnLi9waGFzZXMvbmdfY29udGFpbmVyJztcbmltcG9ydCB7cGhhc2VOb25iaW5kYWJsZX0gZnJvbSAnLi9waGFzZXMvbm9uYmluZGFibGUnO1xuaW1wb3J0IHtwaGFzZU51bGxpc2hDb2FsZXNjaW5nfSBmcm9tICcuL3BoYXNlcy9udWxsaXNoX2NvYWxlc2NpbmcnO1xuaW1wb3J0IHtwaGFzZU9yZGVyaW5nfSBmcm9tICcuL3BoYXNlcy9vcmRlcmluZyc7XG5pbXBvcnQge3BoYXNlUGFyc2VFeHRyYWN0ZWRTdHlsZXN9IGZyb20gJy4vcGhhc2VzL3BhcnNlX2V4dHJhY3RlZF9zdHlsZXMnO1xuaW1wb3J0IHtwaGFzZVJlbW92ZUNvbnRlbnRTZWxlY3RvcnN9IGZyb20gJy4vcGhhc2VzL3BoYXNlX3JlbW92ZV9jb250ZW50X3NlbGVjdG9ycyc7XG5pbXBvcnQge3BoYXNlUGlwZUNyZWF0aW9ufSBmcm9tICcuL3BoYXNlcy9waXBlX2NyZWF0aW9uJztcbmltcG9ydCB7cGhhc2VQaXBlVmFyaWFkaWN9IGZyb20gJy4vcGhhc2VzL3BpcGVfdmFyaWFkaWMnO1xuaW1wb3J0IHtwaGFzZVByb3BhZ2F0ZUkxOG5CbG9ja3N9IGZyb20gJy4vcGhhc2VzL3Byb3BhZ2F0ZV9pMThuX2Jsb2Nrcyc7XG5pbXBvcnQge3BoYXNlUHVyZUZ1bmN0aW9uRXh0cmFjdGlvbn0gZnJvbSAnLi9waGFzZXMvcHVyZV9mdW5jdGlvbl9leHRyYWN0aW9uJztcbmltcG9ydCB7cGhhc2VQdXJlTGl0ZXJhbFN0cnVjdHVyZXN9IGZyb20gJy4vcGhhc2VzL3B1cmVfbGl0ZXJhbF9zdHJ1Y3R1cmVzJztcbmltcG9ydCB7cGhhc2VSZWlmeX0gZnJvbSAnLi9waGFzZXMvcmVpZnknO1xuaW1wb3J0IHtwaGFzZVJlbW92ZUVtcHR5QmluZGluZ3N9IGZyb20gJy4vcGhhc2VzL3JlbW92ZV9lbXB0eV9iaW5kaW5ncyc7XG5pbXBvcnQge3BoYXNlUmVzb2x2ZUNvbnRleHRzfSBmcm9tICcuL3BoYXNlcy9yZXNvbHZlX2NvbnRleHRzJztcbmltcG9ydCB7cGhhc2VSZXNvbHZlRG9sbGFyRXZlbnR9IGZyb20gJy4vcGhhc2VzL3Jlc29sdmVfZG9sbGFyX2V2ZW50JztcbmltcG9ydCB7cGhhc2VSZXNvbHZlSTE4blBsYWNlaG9sZGVyc30gZnJvbSAnLi9waGFzZXMvcmVzb2x2ZV9pMThuX3BsYWNlaG9sZGVycyc7XG5pbXBvcnQge3BoYXNlUmVzb2x2ZU5hbWVzfSBmcm9tICcuL3BoYXNlcy9yZXNvbHZlX25hbWVzJztcbmltcG9ydCB7cGhhc2VSZXNvbHZlU2FuaXRpemVyc30gZnJvbSAnLi9waGFzZXMvcmVzb2x2ZV9zYW5pdGl6ZXJzJztcbmltcG9ydCB7cGhhc2VTYXZlUmVzdG9yZVZpZXd9IGZyb20gJy4vcGhhc2VzL3NhdmVfcmVzdG9yZV92aWV3JztcbmltcG9ydCB7cGhhc2VTbG90QWxsb2NhdGlvbn0gZnJvbSAnLi9waGFzZXMvc2xvdF9hbGxvY2F0aW9uJztcbmltcG9ydCB7cGhhc2VTdHlsZUJpbmRpbmdTcGVjaWFsaXphdGlvbn0gZnJvbSAnLi9waGFzZXMvc3R5bGVfYmluZGluZ19zcGVjaWFsaXphdGlvbic7XG5pbXBvcnQge3BoYXNlVGVtcG9yYXJ5VmFyaWFibGVzfSBmcm9tICcuL3BoYXNlcy90ZW1wb3JhcnlfdmFyaWFibGVzJztcbmltcG9ydCB7cGhhc2VWYXJDb3VudGluZ30gZnJvbSAnLi9waGFzZXMvdmFyX2NvdW50aW5nJztcbmltcG9ydCB7cGhhc2VWYXJpYWJsZU9wdGltaXphdGlvbn0gZnJvbSAnLi9waGFzZXMvdmFyaWFibGVfb3B0aW1pemF0aW9uJztcbmltcG9ydCB7cGhhc2VXcmFwSWN1c30gZnJvbSAnLi9waGFzZXMvd3JhcF9pY3VzJztcbmltcG9ydCB7cGhhc2VUcmFja1ZhcmlhYmxlc30gZnJvbSAnLi9waGFzZXMvdHJhY2tfdmFyaWFibGVzJztcbmltcG9ydCB7cGhhc2VUcmFja0ZuR2VuZXJhdGlvbn0gZnJvbSAnLi9waGFzZXMvdHJhY2tfZm5fZ2VuZXJhdGlvbic7XG5pbXBvcnQge3BoYXNlVHJhY2tGbk9wdGltaXphdGlvbn0gZnJvbSAnLi9waGFzZXMvdHJhY2tfZm5fb3B0aW1pemF0aW9uJztcblxudHlwZSBQaGFzZSA9IHtcbiAgZm46IChqb2I6IENvbXBpbGF0aW9uSm9iKSA9PiB2b2lkOyBraW5kOiBLaW5kLkJvdGggfCBLaW5kLkhvc3QgfCBLaW5kLlRtcGw7XG59fHtcbiAgZm46IChqb2I6IENvbXBvbmVudENvbXBpbGF0aW9uSm9iKSA9PiB2b2lkO1xuICBraW5kOiBLaW5kLlRtcGw7XG59XG58e1xuICBmbjogKGpvYjogSG9zdEJpbmRpbmdDb21waWxhdGlvbkpvYikgPT4gdm9pZDtcbiAga2luZDogS2luZC5Ib3N0O1xufTtcblxuY29uc3QgcGhhc2VzOiBQaGFzZVtdID0gW1xuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VSZW1vdmVDb250ZW50U2VsZWN0b3JzfSxcbiAge2tpbmQ6IEtpbmQuSG9zdCwgZm46IHBoYXNlSG9zdFN0eWxlUHJvcGVydHlQYXJzaW5nfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlTmFtZXNwYWNlfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlU3R5bGVCaW5kaW5nU3BlY2lhbGl6YXRpb259LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VCaW5kaW5nU3BlY2lhbGl6YXRpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VQcm9wYWdhdGVJMThuQmxvY2tzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlV3JhcEljdXN9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VBdHRyaWJ1dGVFeHRyYWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlUGFyc2VFeHRyYWN0ZWRTdHlsZXN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VSZW1vdmVFbXB0eUJpbmRpbmdzfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlQ29sbGFwc2VTaW5nbGV0b25JbnRlcnBvbGF0aW9uc30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZU9yZGVyaW5nfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlQ29uZGl0aW9uYWxzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlUGlwZUNyZWF0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlSTE4blRleHRFeHRyYWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlSWN1RXh0cmFjdGlvbn0sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZUFwcGx5STE4bkV4cHJlc3Npb25zfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlUGlwZVZhcmlhZGljfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlUHVyZUxpdGVyYWxTdHJ1Y3R1cmVzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlR2VuZXJhdGVQcm9qZWN0aW9uRGVmfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlR2VuZXJhdGVWYXJpYWJsZXN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VTYXZlUmVzdG9yZVZpZXd9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VGaW5kQW55Q2FzdHN9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VSZXNvbHZlRG9sbGFyRXZlbnR9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VSZXBlYXRlckRlcml2ZWRWYXJzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlVHJhY2tWYXJpYWJsZXN9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VSZXNvbHZlTmFtZXN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VUcmFja0ZuT3B0aW1pemF0aW9ufSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlUmVzb2x2ZUNvbnRleHRzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlUmVzb2x2ZVNhbml0aXplcnN9LCAgLy8gVE9ETzogcnVuIGluIGJvdGhcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlTG9jYWxSZWZzfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlTnVsbGlzaENvYWxlc2Npbmd9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VFeHBhbmRTYWZlUmVhZHN9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VUZW1wb3JhcnlWYXJpYWJsZXN9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VTbG90QWxsb2NhdGlvbn0sXG4gIHtraW5kOiBLaW5kLlRtcGwsIGZuOiBwaGFzZVJlc29sdmVJMThuUGxhY2Vob2xkZXJzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlVHJhY2tGbkdlbmVyYXRpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VJMThuTWVzc2FnZUV4dHJhY3Rpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VJMThuQ29uc3RDb2xsZWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlQ29uc3RUcmFpdENvbGxlY3Rpb259LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VDb25zdENvbGxlY3Rpb259LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VBc3NpZ25JMThuU2xvdERlcGVuZGVuY2llc30sXG4gIHtraW5kOiBLaW5kLkJvdGgsIGZuOiBwaGFzZVZhckNvdW50aW5nfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlR2VuZXJhdGVBZHZhbmNlfSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlVmFyaWFibGVPcHRpbWl6YXRpb259LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VOYW1pbmd9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VNZXJnZU5leHRDb250ZXh0fSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlTmdDb250YWluZXJ9LFxuICB7a2luZDogS2luZC5UbXBsLCBmbjogcGhhc2VFbXB0eUVsZW1lbnRzfSxcbiAge2tpbmQ6IEtpbmQuVG1wbCwgZm46IHBoYXNlTm9uYmluZGFibGV9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VQdXJlRnVuY3Rpb25FeHRyYWN0aW9ufSxcbiAge2tpbmQ6IEtpbmQuQm90aCwgZm46IHBoYXNlUmVpZnl9LFxuICB7a2luZDogS2luZC5Cb3RoLCBmbjogcGhhc2VDaGFpbmluZ30sXG5dO1xuXG4vKipcbiAqIFJ1biBhbGwgdHJhbnNmb3JtYXRpb24gcGhhc2VzIGluIHRoZSBjb3JyZWN0IG9yZGVyIGFnYWluc3QgYSBjb21waWxhdGlvbiBqb2IuIEFmdGVyIHRoaXNcbiAqIHByb2Nlc3NpbmcsIHRoZSBjb21waWxhdGlvbiBzaG91bGQgYmUgaW4gYSBzdGF0ZSB3aGVyZSBpdCBjYW4gYmUgZW1pdHRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybShqb2I6IENvbXBpbGF0aW9uSm9iLCBraW5kOiBLaW5kKTogdm9pZCB7XG4gIGZvciAoY29uc3QgcGhhc2Ugb2YgcGhhc2VzKSB7XG4gICAgaWYgKHBoYXNlLmtpbmQgPT09IGtpbmQgfHwgcGhhc2Uua2luZCA9PT0gS2luZC5Cb3RoKSB7XG4gICAgICAvLyBUaGUgdHlwZSBvZiBgUGhhc2VgIGFib3ZlIGVuc3VyZXMgaXQgaXMgaW1wb3NzaWJsZSB0byBjYWxsIGEgcGhhc2UgdGhhdCBkb2Vzbid0IHN1cHBvcnQgdGhlXG4gICAgICAvLyBqb2Iga2luZC5cbiAgICAgIHBoYXNlLmZuKGpvYiBhcyBDb21waWxhdGlvbkpvYiAmIENvbXBvbmVudENvbXBpbGF0aW9uSm9iICYgSG9zdEJpbmRpbmdDb21waWxhdGlvbkpvYik7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSBhbGwgdmlld3MgaW4gdGhlIGdpdmVuIGBDb21wb25lbnRDb21waWxhdGlvbmAgaW50byB0aGUgZmluYWwgdGVtcGxhdGUgZnVuY3Rpb24sIHdoaWNoIG1heVxuICogcmVmZXJlbmNlIGNvbnN0YW50cyBkZWZpbmVkIGluIGEgYENvbnN0YW50UG9vbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0VGVtcGxhdGVGbih0cGw6IENvbXBvbmVudENvbXBpbGF0aW9uSm9iLCBwb29sOiBDb25zdGFudFBvb2wpOiBvLkZ1bmN0aW9uRXhwciB7XG4gIGNvbnN0IHJvb3RGbiA9IGVtaXRWaWV3KHRwbC5yb290KTtcbiAgZW1pdENoaWxkVmlld3ModHBsLnJvb3QsIHBvb2wpO1xuICByZXR1cm4gcm9vdEZuO1xufVxuXG5mdW5jdGlvbiBlbWl0Q2hpbGRWaWV3cyhwYXJlbnQ6IFZpZXdDb21waWxhdGlvblVuaXQsIHBvb2w6IENvbnN0YW50UG9vbCk6IHZvaWQge1xuICBmb3IgKGNvbnN0IHVuaXQgb2YgcGFyZW50LmpvYi51bml0cykge1xuICAgIGlmICh1bml0LnBhcmVudCAhPT0gcGFyZW50LnhyZWYpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoaWxkIHZpZXdzIGFyZSBlbWl0dGVkIGRlcHRoLWZpcnN0LlxuICAgIGVtaXRDaGlsZFZpZXdzKHVuaXQsIHBvb2wpO1xuXG4gICAgY29uc3Qgdmlld0ZuID0gZW1pdFZpZXcodW5pdCk7XG4gICAgcG9vbC5zdGF0ZW1lbnRzLnB1c2godmlld0ZuLnRvRGVjbFN0bXQodmlld0ZuLm5hbWUhKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbWl0IGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIGFuIGluZGl2aWR1YWwgYFZpZXdDb21waWxhdGlvbmAgKHdoaWNoIG1heSBiZSBlaXRoZXIgdGhlIHJvb3Qgdmlld1xuICogb3IgYW4gZW1iZWRkZWQgdmlldykuXG4gKi9cbmZ1bmN0aW9uIGVtaXRWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQpOiBvLkZ1bmN0aW9uRXhwciB7XG4gIGlmICh2aWV3LmZuTmFtZSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IHZpZXcgJHt2aWV3LnhyZWZ9IGlzIHVubmFtZWRgKTtcbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZVN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10gPSBbXTtcbiAgZm9yIChjb25zdCBvcCBvZiB2aWV3LmNyZWF0ZSkge1xuICAgIGlmIChvcC5raW5kICE9PSBpci5PcEtpbmQuU3RhdGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBleHBlY3RlZCBhbGwgY3JlYXRlIG9wcyB0byBoYXZlIGJlZW4gY29tcGlsZWQsIGJ1dCBnb3QgJHtcbiAgICAgICAgICBpci5PcEtpbmRbb3Aua2luZF19YCk7XG4gICAgfVxuICAgIGNyZWF0ZVN0YXRlbWVudHMucHVzaChvcC5zdGF0ZW1lbnQpO1xuICB9XG4gIGNvbnN0IHVwZGF0ZVN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10gPSBbXTtcbiAgZm9yIChjb25zdCBvcCBvZiB2aWV3LnVwZGF0ZSkge1xuICAgIGlmIChvcC5raW5kICE9PSBpci5PcEtpbmQuU3RhdGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBleHBlY3RlZCBhbGwgdXBkYXRlIG9wcyB0byBoYXZlIGJlZW4gY29tcGlsZWQsIGJ1dCBnb3QgJHtcbiAgICAgICAgICBpci5PcEtpbmRbb3Aua2luZF19YCk7XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlbWVudHMucHVzaChvcC5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlQ29uZCA9IG1heWJlR2VuZXJhdGVSZkJsb2NrKDEsIGNyZWF0ZVN0YXRlbWVudHMpO1xuICBjb25zdCB1cGRhdGVDb25kID0gbWF5YmVHZW5lcmF0ZVJmQmxvY2soMiwgdXBkYXRlU3RhdGVtZW50cyk7XG4gIHJldHVybiBvLmZuKFxuICAgICAgW1xuICAgICAgICBuZXcgby5GblBhcmFtKCdyZicpLFxuICAgICAgICBuZXcgby5GblBhcmFtKCdjdHgnKSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIC4uLmNyZWF0ZUNvbmQsXG4gICAgICAgIC4uLnVwZGF0ZUNvbmQsXG4gICAgICBdLFxuICAgICAgLyogdHlwZSAqLyB1bmRlZmluZWQsIC8qIHNvdXJjZVNwYW4gKi8gdW5kZWZpbmVkLCB2aWV3LmZuTmFtZSk7XG59XG5cbmZ1bmN0aW9uIG1heWJlR2VuZXJhdGVSZkJsb2NrKGZsYWc6IG51bWJlciwgc3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSk6IG8uU3RhdGVtZW50W10ge1xuICBpZiAoc3RhdGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gW1xuICAgIG8uaWZTdG10KFxuICAgICAgICBuZXcgby5CaW5hcnlPcGVyYXRvckV4cHIoby5CaW5hcnlPcGVyYXRvci5CaXR3aXNlQW5kLCBvLnZhcmlhYmxlKCdyZicpLCBvLmxpdGVyYWwoZmxhZykpLFxuICAgICAgICBzdGF0ZW1lbnRzKSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtaXRIb3N0QmluZGluZ0Z1bmN0aW9uKGpvYjogSG9zdEJpbmRpbmdDb21waWxhdGlvbkpvYik6IG8uRnVuY3Rpb25FeHByfG51bGwge1xuICBpZiAoam9iLnJvb3QuZm5OYW1lID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb25FcnJvcjogaG9zdCBiaW5kaW5nIGZ1bmN0aW9uIGlzIHVubmFtZWRgKTtcbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZVN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10gPSBbXTtcbiAgZm9yIChjb25zdCBvcCBvZiBqb2Iucm9vdC5jcmVhdGUpIHtcbiAgICBpZiAob3Aua2luZCAhPT0gaXIuT3BLaW5kLlN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb25FcnJvcjogZXhwZWN0ZWQgYWxsIGNyZWF0ZSBvcHMgdG8gaGF2ZSBiZWVuIGNvbXBpbGVkLCBidXQgZ290ICR7XG4gICAgICAgICAgaXIuT3BLaW5kW29wLmtpbmRdfWApO1xuICAgIH1cbiAgICBjcmVhdGVTdGF0ZW1lbnRzLnB1c2gob3Auc3RhdGVtZW50KTtcbiAgfVxuICBjb25zdCB1cGRhdGVTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG4gIGZvciAoY29uc3Qgb3Agb2Ygam9iLnJvb3QudXBkYXRlKSB7XG4gICAgaWYgKG9wLmtpbmQgIT09IGlyLk9wS2luZC5TdGF0ZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IGV4cGVjdGVkIGFsbCB1cGRhdGUgb3BzIHRvIGhhdmUgYmVlbiBjb21waWxlZCwgYnV0IGdvdCAke1xuICAgICAgICAgIGlyLk9wS2luZFtvcC5raW5kXX1gKTtcbiAgICB9XG4gICAgdXBkYXRlU3RhdGVtZW50cy5wdXNoKG9wLnN0YXRlbWVudCk7XG4gIH1cblxuICBpZiAoY3JlYXRlU3RhdGVtZW50cy5sZW5ndGggPT09IDAgJiYgdXBkYXRlU3RhdGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZUNvbmQgPSBtYXliZUdlbmVyYXRlUmZCbG9jaygxLCBjcmVhdGVTdGF0ZW1lbnRzKTtcbiAgY29uc3QgdXBkYXRlQ29uZCA9IG1heWJlR2VuZXJhdGVSZkJsb2NrKDIsIHVwZGF0ZVN0YXRlbWVudHMpO1xuICByZXR1cm4gby5mbihcbiAgICAgIFtcbiAgICAgICAgbmV3IG8uRm5QYXJhbSgncmYnKSxcbiAgICAgICAgbmV3IG8uRm5QYXJhbSgnY3R4JyksXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAuLi5jcmVhdGVDb25kLFxuICAgICAgICAuLi51cGRhdGVDb25kLFxuICAgICAgXSxcbiAgICAgIC8qIHR5cGUgKi8gdW5kZWZpbmVkLCAvKiBzb3VyY2VTcGFuICovIHVuZGVmaW5lZCwgam9iLnJvb3QuZm5OYW1lKTtcbn1cbiJdfQ==
|