@angular/compiler 17.1.0-next.3 → 17.1.0-next.5
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/compiler.mjs +2 -2
- package/esm2022/src/compiler_facade_interface.mjs +1 -1
- package/esm2022/src/constant_pool.mjs +5 -3
- package/esm2022/src/jit_compiler_facade.mjs +46 -17
- package/esm2022/src/ml_parser/tags.mjs +8 -3
- package/esm2022/src/render3/partial/api.mjs +1 -1
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
- package/esm2022/src/render3/partial/directive.mjs +112 -17
- 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_identifiers.mjs +4 -1
- package/esm2022/src/render3/view/api.mjs +1 -1
- package/esm2022/src/render3/view/compiler.mjs +24 -9
- package/esm2022/src/render3/view/template.mjs +14 -9
- package/esm2022/src/render3/view/util.mjs +8 -2
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +15 -19
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +26 -20
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +47 -17
- package/esm2022/src/template/pipeline/ir/src/ops/host.mjs +4 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +18 -10
- package/esm2022/src/template/pipeline/src/emit.mjs +6 -6
- package/esm2022/src/template/pipeline/src/ingest.mjs +295 -184
- package/esm2022/src/template/pipeline/src/instruction.mjs +30 -24
- package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +40 -56
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +24 -22
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +60 -15
- package/esm2022/src/template/pipeline/src/phases/convert_i18n_bindings.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/create_defer_deps_fns.mjs +3 -2
- package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +63 -29
- package/esm2022/src/template/pipeline/src/phases/deduplicate_text_bindings.mjs +40 -0
- package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +52 -49
- package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +7 -1
- package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +11 -8
- package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +22 -3
- package/esm2022/src/template/pipeline/src/phases/naming.mjs +13 -5
- package/esm2022/src/template/pipeline/src/phases/ordering.mjs +17 -5
- package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +22 -3
- package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +1 -10
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +31 -14
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +46 -24
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +60 -14
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +23 -10
- package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +78 -14
- package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +3 -1
- package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +4 -1
- package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +10 -1
- package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +4 -3
- package/esm2022/src/template/pipeline/src/util/elements.mjs +8 -1
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +1252 -650
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +41 -8
- package/package.json +2 -2
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_icu_placeholders.mjs +0 -62
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.1.0-next.
|
|
2
|
+
* @license Angular v17.1.0-next.5
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -804,7 +804,7 @@ export declare class ConstantPool {
|
|
|
804
804
|
literalFactory: outputAst.Expression;
|
|
805
805
|
literalFactoryArguments: outputAst.Expression[];
|
|
806
806
|
};
|
|
807
|
-
getSharedFunctionReference(fn: outputAst.FunctionExpr | outputAst.ArrowFunctionExpr, prefix: string): outputAst.Expression;
|
|
807
|
+
getSharedFunctionReference(fn: outputAst.FunctionExpr | outputAst.ArrowFunctionExpr, prefix: string, useUniqueName?: boolean): outputAst.Expression;
|
|
808
808
|
private _getLiteralFactory;
|
|
809
809
|
/**
|
|
810
810
|
* Produce a unique name.
|
|
@@ -1178,6 +1178,16 @@ export declare class EmptyExpr extends AST {
|
|
|
1178
1178
|
visit(visitor: AstVisitor, context?: any): void;
|
|
1179
1179
|
}
|
|
1180
1180
|
|
|
1181
|
+
/**
|
|
1182
|
+
* Encapsulates a CSS stylesheet with emulated view encapsulation.
|
|
1183
|
+
* This allows a stylesheet to be used with an Angular component that
|
|
1184
|
+
* is using the `ViewEncapsulation.Emulated` mode.
|
|
1185
|
+
*
|
|
1186
|
+
* @param style The content of a CSS stylesheet.
|
|
1187
|
+
* @returns The encapsulated content for the style.
|
|
1188
|
+
*/
|
|
1189
|
+
export declare function encapsulateStyle(style: string): string;
|
|
1190
|
+
|
|
1181
1191
|
declare interface EncodedEntityToken extends TokenBase {
|
|
1182
1192
|
type: LexerTokenType.ENCODED_ENTITY;
|
|
1183
1193
|
parts: [decoded: string, encoded: string];
|
|
@@ -1741,6 +1751,12 @@ export declare class LeadingComment {
|
|
|
1741
1751
|
|
|
1742
1752
|
export declare function leadingComment(text: string, multiline?: boolean, trailingNewline?: boolean): LeadingComment;
|
|
1743
1753
|
|
|
1754
|
+
export declare type LegacyInputPartialMapping = string | [
|
|
1755
|
+
bindingPropertyName: string,
|
|
1756
|
+
classPropertyName: string,
|
|
1757
|
+
transformFunction?: outputAst.Expression
|
|
1758
|
+
];
|
|
1759
|
+
|
|
1744
1760
|
export declare class Lexer {
|
|
1745
1761
|
tokenize(text: string): Token[];
|
|
1746
1762
|
}
|
|
@@ -3236,11 +3252,13 @@ export declare interface R3DeclareDirectiveMetadata extends R3PartialDeclaration
|
|
|
3236
3252
|
* binding property name and class property name if the names are different.
|
|
3237
3253
|
*/
|
|
3238
3254
|
inputs?: {
|
|
3239
|
-
[
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3255
|
+
[fieldName: string]: {
|
|
3256
|
+
classPropertyName: string;
|
|
3257
|
+
publicName: string;
|
|
3258
|
+
isSignal: boolean;
|
|
3259
|
+
isRequired: boolean;
|
|
3260
|
+
transformFunction: outputAst.Expression | null;
|
|
3261
|
+
} | LegacyInputPartialMapping;
|
|
3244
3262
|
};
|
|
3245
3263
|
/**
|
|
3246
3264
|
* A mapping of outputs from class property names to binding property names.
|
|
@@ -3975,6 +3993,14 @@ export declare class R3Identifiers {
|
|
|
3975
3993
|
static trustConstantHtml: outputAst.ExternalReference;
|
|
3976
3994
|
static trustConstantResourceUrl: outputAst.ExternalReference;
|
|
3977
3995
|
static validateIframeAttribute: outputAst.ExternalReference;
|
|
3996
|
+
static InputSignalBrandWriteType: {
|
|
3997
|
+
name: string;
|
|
3998
|
+
moduleName: string;
|
|
3999
|
+
};
|
|
4000
|
+
static UnwrapDirectiveSignalInputs: {
|
|
4001
|
+
name: string;
|
|
4002
|
+
moduleName: string;
|
|
4003
|
+
};
|
|
3978
4004
|
}
|
|
3979
4005
|
|
|
3980
4006
|
export declare interface R3InjectableMetadata {
|
|
@@ -4003,6 +4029,13 @@ export declare interface R3InputMetadata {
|
|
|
4003
4029
|
classPropertyName: string;
|
|
4004
4030
|
bindingPropertyName: string;
|
|
4005
4031
|
required: boolean;
|
|
4032
|
+
isSignal: boolean;
|
|
4033
|
+
/**
|
|
4034
|
+
* Transform function for the input.
|
|
4035
|
+
*
|
|
4036
|
+
* Null if there is no transform, or if this is a signal input.
|
|
4037
|
+
* Signal inputs capture their transform as part of the `InputSignal`.
|
|
4038
|
+
*/
|
|
4006
4039
|
transformFunction: outputAst.Expression | null;
|
|
4007
4040
|
}
|
|
4008
4041
|
|
|
@@ -4605,7 +4638,7 @@ export declare class SplitInterpolation {
|
|
|
4605
4638
|
constructor(strings: InterpolationPiece[], expressions: InterpolationPiece[], offsets: number[]);
|
|
4606
4639
|
}
|
|
4607
4640
|
|
|
4608
|
-
export declare function splitNsName(elementName: string): [string | null, string];
|
|
4641
|
+
export declare function splitNsName(elementName: string, fatal?: boolean): [string | null, string];
|
|
4609
4642
|
|
|
4610
4643
|
export declare abstract class Statement {
|
|
4611
4644
|
modifiers: StmtModifier;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/compiler",
|
|
3
|
-
"version": "17.1.0-next.
|
|
3
|
+
"version": "17.1.0-next.5",
|
|
4
4
|
"description": "Angular - the compiler library",
|
|
5
5
|
"author": "angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"tslib": "^2.3.0"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@angular/core": "17.1.0-next.
|
|
14
|
+
"@angular/core": "17.1.0-next.5"
|
|
15
15
|
},
|
|
16
16
|
"peerDependenciesMeta": {
|
|
17
17
|
"@angular/core": {
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as i18n from '../../../../i18n/i18n_ast';
|
|
9
|
-
import * as ir from '../../ir';
|
|
10
|
-
/**
|
|
11
|
-
* Resolves placeholders for element tags inside of an ICU.
|
|
12
|
-
*/
|
|
13
|
-
export function resolveI18nIcuPlaceholders(job) {
|
|
14
|
-
for (const unit of job.units) {
|
|
15
|
-
for (const op of unit.create) {
|
|
16
|
-
if (op.kind === ir.OpKind.I18nContext && op.contextKind === ir.I18nContextKind.Icu) {
|
|
17
|
-
for (const node of op.message.nodes) {
|
|
18
|
-
node.visit(new ResolveIcuPlaceholdersVisitor(op.postprocessingParams));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Visitor for i18n AST that resolves ICU params into the given map.
|
|
26
|
-
*/
|
|
27
|
-
class ResolveIcuPlaceholdersVisitor extends i18n.RecurseVisitor {
|
|
28
|
-
constructor(params) {
|
|
29
|
-
super();
|
|
30
|
-
this.params = params;
|
|
31
|
-
}
|
|
32
|
-
visitContainerPlaceholder(placeholder) {
|
|
33
|
-
// Add the start and end source span for container placeholders. These need to be recorded for
|
|
34
|
-
// elements inside ICUs. The slots for the nodes were recorded separately under the i18n
|
|
35
|
-
// block's context as part of the `resolveI18nElementPlaceholders` phase.
|
|
36
|
-
if (placeholder.startName && placeholder.startSourceSpan &&
|
|
37
|
-
!this.params.has(placeholder.startName)) {
|
|
38
|
-
this.params.set(placeholder.startName, [{
|
|
39
|
-
value: placeholder.startSourceSpan?.toString(),
|
|
40
|
-
subTemplateIndex: null,
|
|
41
|
-
flags: ir.I18nParamValueFlags.None
|
|
42
|
-
}]);
|
|
43
|
-
}
|
|
44
|
-
if (placeholder.closeName && placeholder.endSourceSpan &&
|
|
45
|
-
!this.params.has(placeholder.closeName)) {
|
|
46
|
-
this.params.set(placeholder.closeName, [{
|
|
47
|
-
value: placeholder.endSourceSpan?.toString(),
|
|
48
|
-
subTemplateIndex: null,
|
|
49
|
-
flags: ir.I18nParamValueFlags.None
|
|
50
|
-
}]);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
visitTagPlaceholder(placeholder) {
|
|
54
|
-
super.visitTagPlaceholder(placeholder);
|
|
55
|
-
this.visitContainerPlaceholder(placeholder);
|
|
56
|
-
}
|
|
57
|
-
visitBlockPlaceholder(placeholder) {
|
|
58
|
-
super.visitBlockPlaceholder(placeholder);
|
|
59
|
-
this.visitContainerPlaceholder(placeholder);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZV9pMThuX2ljdV9wbGFjZWhvbGRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9yZXNvbHZlX2kxOG5faWN1X3BsYWNlaG9sZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COztHQUVHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEdBQW1CO0lBQzVELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ25GLEtBQUssTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLDZCQUE2QixDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLDZCQUE4QixTQUFRLElBQUksQ0FBQyxjQUFjO0lBQzdELFlBQTZCLE1BQXdDO1FBQ25FLEtBQUssRUFBRSxDQUFDO1FBRG1CLFdBQU0sR0FBTixNQUFNLENBQWtDO0lBRXJFLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFzRDtRQUN0Riw4RkFBOEY7UUFDOUYsd0ZBQXdGO1FBQ3hGLHlFQUF5RTtRQUN6RSxJQUFJLFdBQVcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLGVBQWU7WUFDcEQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3RCLEtBQUssRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRTtvQkFDOUMsZ0JBQWdCLEVBQUUsSUFBSTtvQkFDdEIsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO2lCQUNuQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxXQUFXLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxhQUFhO1lBQ2xELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN0QixLQUFLLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUU7b0JBQzVDLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSTtpQkFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFUSxtQkFBbUIsQ0FBQyxXQUFnQztRQUMzRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUSxxQkFBcUIsQ0FBQyxXQUFrQztRQUMvRCxLQUFLLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpMThuIGZyb20gJy4uLy4uLy4uLy4uL2kxOG4vaTE4bl9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIFJlc29sdmVzIHBsYWNlaG9sZGVycyBmb3IgZWxlbWVudCB0YWdzIGluc2lkZSBvZiBhbiBJQ1UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSTE4bkljdVBsYWNlaG9sZGVycyhqb2I6IENvbXBpbGF0aW9uSm9iKSB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBpZiAob3Aua2luZCA9PT0gaXIuT3BLaW5kLkkxOG5Db250ZXh0ICYmIG9wLmNvbnRleHRLaW5kID09PSBpci5JMThuQ29udGV4dEtpbmQuSWN1KSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBvcC5tZXNzYWdlLm5vZGVzKSB7XG4gICAgICAgICAgbm9kZS52aXNpdChuZXcgUmVzb2x2ZUljdVBsYWNlaG9sZGVyc1Zpc2l0b3Iob3AucG9zdHByb2Nlc3NpbmdQYXJhbXMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZpc2l0b3IgZm9yIGkxOG4gQVNUIHRoYXQgcmVzb2x2ZXMgSUNVIHBhcmFtcyBpbnRvIHRoZSBnaXZlbiBtYXAuXG4gKi9cbmNsYXNzIFJlc29sdmVJY3VQbGFjZWhvbGRlcnNWaXNpdG9yIGV4dGVuZHMgaTE4bi5SZWN1cnNlVmlzaXRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFyYW1zOiBNYXA8c3RyaW5nLCBpci5JMThuUGFyYW1WYWx1ZVtdPikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcml2YXRlIHZpc2l0Q29udGFpbmVyUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IGkxOG4uVGFnUGxhY2Vob2xkZXJ8aTE4bi5CbG9ja1BsYWNlaG9sZGVyKSB7XG4gICAgLy8gQWRkIHRoZSBzdGFydCBhbmQgZW5kIHNvdXJjZSBzcGFuIGZvciBjb250YWluZXIgcGxhY2Vob2xkZXJzLiBUaGVzZSBuZWVkIHRvIGJlIHJlY29yZGVkIGZvclxuICAgIC8vIGVsZW1lbnRzIGluc2lkZSBJQ1VzLiBUaGUgc2xvdHMgZm9yIHRoZSBub2RlcyB3ZXJlIHJlY29yZGVkIHNlcGFyYXRlbHkgdW5kZXIgdGhlIGkxOG5cbiAgICAvLyBibG9jaydzIGNvbnRleHQgYXMgcGFydCBvZiB0aGUgYHJlc29sdmVJMThuRWxlbWVudFBsYWNlaG9sZGVyc2AgcGhhc2UuXG4gICAgaWYgKHBsYWNlaG9sZGVyLnN0YXJ0TmFtZSAmJiBwbGFjZWhvbGRlci5zdGFydFNvdXJjZVNwYW4gJiZcbiAgICAgICAgIXRoaXMucGFyYW1zLmhhcyhwbGFjZWhvbGRlci5zdGFydE5hbWUpKSB7XG4gICAgICB0aGlzLnBhcmFtcy5zZXQocGxhY2Vob2xkZXIuc3RhcnROYW1lLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBsYWNlaG9sZGVyLnN0YXJ0U291cmNlU3Bhbj8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRlbXBsYXRlSW5kZXg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnczogaXIuSTE4blBhcmFtVmFsdWVGbGFncy5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgfV0pO1xuICAgIH1cbiAgICBpZiAocGxhY2Vob2xkZXIuY2xvc2VOYW1lICYmIHBsYWNlaG9sZGVyLmVuZFNvdXJjZVNwYW4gJiZcbiAgICAgICAgIXRoaXMucGFyYW1zLmhhcyhwbGFjZWhvbGRlci5jbG9zZU5hbWUpKSB7XG4gICAgICB0aGlzLnBhcmFtcy5zZXQocGxhY2Vob2xkZXIuY2xvc2VOYW1lLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBsYWNlaG9sZGVyLmVuZFNvdXJjZVNwYW4/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJUZW1wbGF0ZUluZGV4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M6IGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIH1dKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB2aXNpdFRhZ1BsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBpMThuLlRhZ1BsYWNlaG9sZGVyKSB7XG4gICAgc3VwZXIudmlzaXRUYWdQbGFjZWhvbGRlcihwbGFjZWhvbGRlcik7XG4gICAgdGhpcy52aXNpdENvbnRhaW5lclBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0QmxvY2tQbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogaTE4bi5CbG9ja1BsYWNlaG9sZGVyKSB7XG4gICAgc3VwZXIudmlzaXRCbG9ja1BsYWNlaG9sZGVyKHBsYWNlaG9sZGVyKTtcbiAgICB0aGlzLnZpc2l0Q29udGFpbmVyUGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpO1xuICB9XG59XG4iXX0=
|