@angular/core 14.1.3 → 14.2.0-rc.0

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.
Files changed (36) hide show
  1. package/esm2020/src/application_ref.mjs +26 -21
  2. package/esm2020/src/core_private_export.mjs +3 -3
  3. package/esm2020/src/core_render3_private_export.mjs +4 -4
  4. package/esm2020/src/di/interface/defs.mjs +4 -1
  5. package/esm2020/src/render3/component_ref.mjs +4 -31
  6. package/esm2020/src/render3/definition.mjs +5 -1
  7. package/esm2020/src/render3/index.mjs +4 -4
  8. package/esm2020/src/render3/instructions/change_detection.mjs +3 -19
  9. package/esm2020/src/render3/instructions/shared.mjs +1 -43
  10. package/esm2020/src/render3/interfaces/view.mjs +1 -1
  11. package/esm2020/src/render3/jit/module.mjs +2 -6
  12. package/esm2020/src/render3/util/change_detection_utils.mjs +7 -3
  13. package/esm2020/src/render3/util/misc_utils.mjs +1 -7
  14. package/esm2020/src/version.mjs +1 -1
  15. package/esm2020/testing/src/logger.mjs +3 -3
  16. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  17. package/esm2020/testing/src/resolvers.mjs +1 -1
  18. package/esm2020/testing/src/test_bed.mjs +442 -15
  19. package/esm2020/testing/src/test_bed_common.mjs +1 -1
  20. package/esm2020/testing/src/test_bed_compiler.mjs +823 -0
  21. package/esm2020/testing/src/test_hooks.mjs +5 -5
  22. package/esm2020/testing/src/testing.mjs +1 -1
  23. package/fesm2015/core.mjs +38 -116
  24. package/fesm2015/core.mjs.map +1 -1
  25. package/fesm2015/testing.mjs +114 -202
  26. package/fesm2015/testing.mjs.map +1 -1
  27. package/fesm2020/core.mjs +38 -116
  28. package/fesm2020/core.mjs.map +1 -1
  29. package/fesm2020/testing.mjs +114 -203
  30. package/fesm2020/testing.mjs.map +1 -1
  31. package/index.d.ts +13 -100
  32. package/package.json +1 -1
  33. package/testing/index.d.ts +18 -94
  34. package/esm2020/src/render3/interfaces/player.mjs +0 -9
  35. package/esm2020/testing/src/r3_test_bed.mjs +0 -433
  36. package/esm2020/testing/src/r3_test_bed_compiler.mjs +0 -823
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.1.3
2
+ * @license Angular v14.2.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1316,8 +1316,6 @@ declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1316
1316
  resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1317
1317
  }
1318
1318
 
1319
- declare type ComponentInstance = {};
1320
-
1321
1319
  /**
1322
1320
  * An interface that describes the subset of component metadata
1323
1321
  * that can be retrieved using the `reflectComponentType` function.
@@ -2512,8 +2510,6 @@ declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
2512
2510
  */
2513
2511
  declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
2514
2512
 
2515
- declare type DirectiveInstance = {};
2516
-
2517
2513
  /**
2518
2514
  * @description
2519
2515
  * Hook for manual bootstrapping of the application instead of using `bootstrap` array in @NgModule
@@ -10197,6 +10193,12 @@ export declare function ɵfindLocaleData(locale: string): any;
10197
10193
  */
10198
10194
  export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void;
10199
10195
 
10196
+ /**
10197
+ * Called to format a runtime error.
10198
+ * See additional info on the `message` argument type in the `RuntimeError` class description.
10199
+ */
10200
+ export declare function ɵformatRuntimeError<T extends number = RuntimeErrorCode>(code: T, message: null | false | string): string;
10201
+
10200
10202
  export declare function ɵgetDebugNodeR2(_nativeNode: any): DebugNode | null;
10201
10203
 
10202
10204
  /**
@@ -10316,7 +10318,8 @@ export declare function ɵinjectChangeDetectorRef(flags: InjectFlags): ChangeDet
10316
10318
  export declare const ɵINJECTOR_SCOPE: InjectionToken<InjectorScope | null>;
10317
10319
 
10318
10320
  /**
10319
- * Internal bootstrap application API that implements the core bootstrap logic.
10321
+ * Internal create application API that implements the core application creation logic and optional
10322
+ * bootstrap logic.
10320
10323
  *
10321
10324
  * Platforms (such as `platform-browser`) may require different set of application and platform
10322
10325
  * providers for an application to function correctly. As a result, platforms may use this function
@@ -10325,8 +10328,8 @@ export declare const ɵINJECTOR_SCOPE: InjectionToken<InjectorScope | null>;
10325
10328
  *
10326
10329
  * @returns A promise that returns an `ApplicationRef` instance once resolved.
10327
10330
  */
10328
- export declare function ɵinternalBootstrapApplication(config: {
10329
- rootComponent: Type<unknown>;
10331
+ export declare function ɵinternalCreateApplication(config: {
10332
+ rootComponent?: Type<unknown>;
10330
10333
  appProviders?: Array<Provider | ImportedNgModuleProviders>;
10331
10334
  platformProviders?: Provider[];
10332
10335
  }): Promise<ApplicationRef>;
@@ -10342,6 +10345,8 @@ export declare function ɵisBoundToModule<C>(cf: ComponentFactory<C>): boolean;
10342
10345
  */
10343
10346
  export declare function ɵisDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy): boolean;
10344
10347
 
10348
+ export declare function ɵisInjectable(type: any): boolean;
10349
+
10345
10350
  export declare function ɵisListLikeIterable(obj: any): boolean;
10346
10351
 
10347
10352
  /**
@@ -10476,17 +10481,6 @@ export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]
10476
10481
  (...args: any[]): (cls: any) => any;
10477
10482
  };
10478
10483
 
10479
- /**
10480
- * Marks the component as dirty (needing change detection). Marking a component dirty will
10481
- * schedule a change detection on it at some point in the future.
10482
- *
10483
- * Marking an already dirty component as dirty won't do anything. Only one outstanding change
10484
- * detection can be scheduled per component tree.
10485
- *
10486
- * @param component Component to mark as dirty.
10487
- */
10488
- export declare function ɵmarkDirty(component: {}): void;
10489
-
10490
10484
 
10491
10485
  export declare const ɵNG_COMP_DEF: string;
10492
10486
 
@@ -10661,69 +10655,6 @@ export declare interface ɵPipeDef<T> {
10661
10655
  onDestroy: (() => void) | null;
10662
10656
  }
10663
10657
 
10664
-
10665
- /**
10666
- * A shared interface which contains an animation player
10667
- */
10668
- export declare interface ɵPlayer {
10669
- parent?: ɵPlayer | null;
10670
- state: ɵPlayState;
10671
- play(): void;
10672
- pause(): void;
10673
- finish(): void;
10674
- destroy(): void;
10675
- addEventListener(state: ɵPlayState | string, cb: (data?: any) => any): void;
10676
- }
10677
-
10678
- /**
10679
- * Used as a reference to build a player from a styling template binding
10680
- * (`[style]` and `[class]`).
10681
- *
10682
- * The `fn` function will be called once any styling-related changes are
10683
- * evaluated on an element and is expected to return a player that will
10684
- * be then run on the element.
10685
- *
10686
- * `[style]`, `[style.prop]`, `[class]` and `[class.name]` template bindings
10687
- * all accept a `PlayerFactory` as input and this player factories.
10688
- */
10689
- export declare interface ɵPlayerFactory {
10690
- '__brand__': 'Brand for PlayerFactory that nothing will match';
10691
- }
10692
-
10693
- /**
10694
- * Designed to be used as an injection service to capture all animation players.
10695
- *
10696
- * When present all animation players will be passed into the flush method below.
10697
- * This feature is designed to service application-wide animation testing, live
10698
- * debugging as well as custom animation choreographing tools.
10699
- */
10700
- export declare interface ɵPlayerHandler {
10701
- /**
10702
- * Designed to kick off the player at the end of change detection
10703
- */
10704
- flushPlayers(): void;
10705
- /**
10706
- * @param player The player that has been scheduled to run within the application.
10707
- * @param context The context as to where the player was bound to
10708
- */
10709
- queuePlayer(player: ɵPlayer, context: ComponentInstance | DirectiveInstance | HTMLElement): void;
10710
- }
10711
-
10712
- /**
10713
- * The state of a given player
10714
- *
10715
- * Do not change the increasing nature of the numbers since the player
10716
- * code may compare state by checking if a number is higher or lower than
10717
- * a certain numeric value.
10718
- */
10719
- export declare const enum ɵPlayState {
10720
- Pending = 0,
10721
- Running = 1,
10722
- Paused = 2,
10723
- Finished = 100,
10724
- Destroyed = 200
10725
- }
10726
-
10727
10658
  /**
10728
10659
  * Profiler function which the runtime will invoke before and after user code.
10729
10660
  */
@@ -11311,24 +11242,6 @@ export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, InternalViewRef
11311
11242
  attachToAppRef(appRef: ViewRefTracker): void;
11312
11243
  }
11313
11244
 
11314
- /**
11315
- * Wait on component until it is rendered.
11316
- *
11317
- * This function returns a `Promise` which is resolved when the component's
11318
- * change detection is executed. This is determined by finding the scheduler
11319
- * associated with the `component`'s render tree and waiting until the scheduler
11320
- * flushes. If nothing is scheduled, the function returns a resolved promise.
11321
- *
11322
- * Example:
11323
- * ```
11324
- * await whenRendered(myComponent);
11325
- * ```
11326
- *
11327
- * @param component Component to wait upon
11328
- * @returns Promise which resolves when the component is rendered.
11329
- */
11330
- export declare function ɵwhenRendered(component: any): Promise<null>;
11331
-
11332
11245
  /**
11333
11246
  * Advances to an element for later binding instructions.
11334
11247
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "14.1.3",
3
+ "version": "14.2.0-rc.0",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.1.3
2
+ * @license Angular v14.2.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -178,13 +178,11 @@ export declare function flush(maxTurns?: number): number;
178
178
  export declare function flushMicrotasks(): void;
179
179
 
180
180
  /**
181
- * Returns a singleton of the applicable `TestBed`.
182
- *
183
- * It will be either an instance of `TestBedViewEngine` or `TestBedRender3`.
181
+ * Returns a singleton of the `TestBed` class.
184
182
  *
185
183
  * @publicApi
186
184
  */
187
- export declare const getTestBed: () => TestBed;
185
+ export declare function getTestBed(): TestBed;
188
186
 
189
187
  /**
190
188
  * Allows injecting dependencies in `beforeEach()` and `it()`. Note: this function
@@ -255,8 +253,8 @@ export declare function resetFakeAsyncZone(): void;
255
253
  * @publicApi
256
254
  */
257
255
  export declare interface TestBed {
258
- platform: PlatformRef;
259
- ngModule: Type<any> | Type<any>[];
256
+ get platform(): PlatformRef;
257
+ get ngModule(): Type<any> | Type<any>[];
260
258
  /**
261
259
  * Initialize the environment for testing with a compiler factory, a PlatformRef, and an
262
260
  * angular module. These are common to every test in the suite.
@@ -273,12 +271,12 @@ export declare interface TestBed {
273
271
  * Reset the providers for the test injector.
274
272
  */
275
273
  resetTestEnvironment(): void;
276
- resetTestingModule(): void;
274
+ resetTestingModule(): TestBed;
277
275
  configureCompiler(config: {
278
276
  providers?: any[];
279
277
  useJit?: boolean;
280
278
  }): void;
281
- configureTestingModule(moduleDef: TestModuleMetadata): void;
279
+ configureTestingModule(moduleDef: TestModuleMetadata): TestBed;
282
280
  compileComponents(): Promise<any>;
283
281
  inject<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
284
282
  inject<T>(token: ProviderToken<T>, notFoundValue: null, flags?: InjectFlags): T | null;
@@ -287,26 +285,27 @@ export declare interface TestBed {
287
285
  /** @deprecated from v9.0.0 use TestBed.inject */
288
286
  get(token: any, notFoundValue?: any): any;
289
287
  execute(tokens: any[], fn: Function, context?: any): any;
290
- overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): void;
291
- overrideComponent(component: Type<any>, override: MetadataOverride<Component>): void;
292
- overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): void;
293
- overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): void;
288
+ overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): TestBed;
289
+ overrideComponent(component: Type<any>, override: MetadataOverride<Component>): TestBed;
290
+ overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): TestBed;
291
+ overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): TestBed;
292
+ overrideTemplate(component: Type<any>, template: string): TestBed;
294
293
  /**
295
294
  * Overwrites all providers for the given token with the given provider definition.
296
295
  */
297
296
  overrideProvider(token: any, provider: {
298
297
  useFactory: Function;
299
298
  deps: any[];
300
- }): void;
299
+ }): TestBed;
301
300
  overrideProvider(token: any, provider: {
302
301
  useValue: any;
303
- }): void;
302
+ }): TestBed;
304
303
  overrideProvider(token: any, provider: {
305
304
  useFactory?: Function;
306
305
  useValue?: any;
307
306
  deps?: any[];
308
- }): void;
309
- overrideTemplateUsingTestingModule(component: Type<any>, template: string): void;
307
+ }): TestBed;
308
+ overrideTemplateUsingTestingModule(component: Type<any>, template: string): TestBed;
310
309
  createComponent<T>(component: Type<T>): ComponentFixture<T>;
311
310
  }
312
311
 
@@ -317,92 +316,17 @@ export declare interface TestBed {
317
316
  *
318
317
  * `TestBed` is the primary api for writing unit tests for Angular applications and libraries.
319
318
  *
320
- * Note: Use `TestBed` in tests. It will be set to either `TestBedViewEngine` or `TestBedRender3`
321
- * according to the compiler used.
322
- *
323
319
  * @publicApi
324
320
  */
325
321
  export declare const TestBed: TestBedStatic;
326
322
 
327
323
  /**
328
- * Static methods implemented by the `TestBedViewEngine` and `TestBedRender3`
324
+ * Static methods implemented by the `TestBed`.
329
325
  *
330
326
  * @publicApi
331
327
  */
332
- export declare interface TestBedStatic {
328
+ export declare interface TestBedStatic extends TestBed {
333
329
  new (...args: any[]): TestBed;
334
- /**
335
- * Initialize the environment for testing with a compiler factory, a PlatformRef, and an
336
- * angular module. These are common to every test in the suite.
337
- *
338
- * This may only be called once, to set up the common providers for the current test
339
- * suite on the current platform. If you absolutely need to change the providers,
340
- * first use `resetTestEnvironment`.
341
- *
342
- * Test modules and platforms for individual platforms are available from
343
- * '@angular/<platform_name>/testing'.
344
- */
345
- initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef, options?: TestEnvironmentOptions): TestBed;
346
- /**
347
- * Reset the providers for the test injector.
348
- */
349
- resetTestEnvironment(): void;
350
- resetTestingModule(): TestBedStatic;
351
- /**
352
- * Allows overriding default compiler providers and settings
353
- * which are defined in test_injector.js
354
- */
355
- configureCompiler(config: {
356
- providers?: any[];
357
- useJit?: boolean;
358
- }): TestBedStatic;
359
- /**
360
- * Allows overriding default providers, directives, pipes, modules of the test injector,
361
- * which are defined in test_injector.js
362
- */
363
- configureTestingModule(moduleDef: TestModuleMetadata): TestBedStatic;
364
- /**
365
- * Compile components with a `templateUrl` for the test's NgModule.
366
- * It is necessary to call this function
367
- * as fetching urls is asynchronous.
368
- */
369
- compileComponents(): Promise<any>;
370
- overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): TestBedStatic;
371
- overrideComponent(component: Type<any>, override: MetadataOverride<Component>): TestBedStatic;
372
- overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): TestBedStatic;
373
- overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): TestBedStatic;
374
- overrideTemplate(component: Type<any>, template: string): TestBedStatic;
375
- /**
376
- * Overrides the template of the given component, compiling the template
377
- * in the context of the TestingModule.
378
- *
379
- * Note: This works for JIT and AOTed components as well.
380
- */
381
- overrideTemplateUsingTestingModule(component: Type<any>, template: string): TestBedStatic;
382
- /**
383
- * Overwrites all providers for the given token with the given provider definition.
384
- *
385
- * Note: This works for JIT and AOTed components as well.
386
- */
387
- overrideProvider(token: any, provider: {
388
- useFactory: Function;
389
- deps: any[];
390
- }): TestBedStatic;
391
- overrideProvider(token: any, provider: {
392
- useValue: any;
393
- }): TestBedStatic;
394
- overrideProvider(token: any, provider: {
395
- useFactory?: Function;
396
- useValue?: any;
397
- deps?: any[];
398
- }): TestBedStatic;
399
- inject<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
400
- inject<T>(token: ProviderToken<T>, notFoundValue: null, flags?: InjectFlags): T | null;
401
- /** @deprecated from v9.0.0 use TestBed.inject */
402
- get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): any;
403
- /** @deprecated from v9.0.0 use TestBed.inject */
404
- get(token: any, notFoundValue?: any): any;
405
- createComponent<T>(component: Type<T>): ComponentFixture<T>;
406
330
  }
407
331
 
408
332
  /**
@@ -1,9 +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
- export {};
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9pbnRlcmZhY2VzL3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIHNoYXJlZCBpbnRlcmZhY2Ugd2hpY2ggY29udGFpbnMgYW4gYW5pbWF0aW9uIHBsYXllclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYXllciB7XG4gIHBhcmVudD86IFBsYXllcnxudWxsO1xuICBzdGF0ZTogUGxheVN0YXRlO1xuICBwbGF5KCk6IHZvaWQ7XG4gIHBhdXNlKCk6IHZvaWQ7XG4gIGZpbmlzaCgpOiB2b2lkO1xuICBkZXN0cm95KCk6IHZvaWQ7XG4gIGFkZEV2ZW50TGlzdGVuZXIoc3RhdGU6IFBsYXlTdGF0ZXxzdHJpbmcsIGNiOiAoZGF0YT86IGFueSkgPT4gYW55KTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gQmluZGluZ1R5cGUge1xuICBVbnNldCA9IDAsXG4gIENsYXNzID0gMSxcbiAgU3R5bGUgPSAyLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRpbmdTdG9yZSB7XG4gIHNldFZhbHVlKHByb3A6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgc2hhcGUgd2hpY2ggcHJvZHVjZXMgdGhlIFBsYXllci5cbiAqXG4gKiBVc2VkIHRvIHByb2R1Y2UgYSBwbGF5ZXIgdGhhdCB3aWxsIGJlIHBsYWNlZCBvbiBhbiBlbGVtZW50IHRoYXQgY29udGFpbnNcbiAqIHN0eWxpbmcgYmluZGluZ3MgdGhhdCBtYWtlIHVzZSBvZiB0aGUgcGxheWVyLiBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkXG4gKiB0byBiZSB1c2VkIHdpdGggYFBsYXllckZhY3RvcnlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYXllckZhY3RvcnlCdWlsZEZuIHtcbiAgKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0eXBlOiBCaW5kaW5nVHlwZSwgdmFsdWVzOiB7W2tleTogc3RyaW5nXTogYW55fSwgaXNGaXJzdFJlbmRlcjogYm9vbGVhbixcbiAgIGN1cnJlbnRQbGF5ZXI6IFBsYXllcnxudWxsKTogUGxheWVyfG51bGw7XG59XG5cbi8qKlxuICogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byBidWlsZCBhIHBsYXllciBmcm9tIGEgc3R5bGluZyB0ZW1wbGF0ZSBiaW5kaW5nXG4gKiAoYFtzdHlsZV1gIGFuZCBgW2NsYXNzXWApLlxuICpcbiAqIFRoZSBgZm5gIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9uY2UgYW55IHN0eWxpbmctcmVsYXRlZCBjaGFuZ2VzIGFyZVxuICogZXZhbHVhdGVkIG9uIGFuIGVsZW1lbnQgYW5kIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHBsYXllciB0aGF0IHdpbGxcbiAqIGJlIHRoZW4gcnVuIG9uIHRoZSBlbGVtZW50LlxuICpcbiAqIGBbc3R5bGVdYCwgYFtzdHlsZS5wcm9wXWAsIGBbY2xhc3NdYCBhbmQgYFtjbGFzcy5uYW1lXWAgdGVtcGxhdGUgYmluZGluZ3NcbiAqIGFsbCBhY2NlcHQgYSBgUGxheWVyRmFjdG9yeWAgYXMgaW5wdXQgYW5kIHRoaXMgcGxheWVyIGZhY3Rvcmllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF5ZXJGYWN0b3J5IHtcbiAgJ19fYnJhbmRfXyc6ICdCcmFuZCBmb3IgUGxheWVyRmFjdG9yeSB0aGF0IG5vdGhpbmcgd2lsbCBtYXRjaCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheWVyQnVpbGRlciBleHRlbmRzIEJpbmRpbmdTdG9yZSB7XG4gIGJ1aWxkUGxheWVyKGN1cnJlbnRQbGF5ZXI6IFBsYXllcnxudWxsLCBpc0ZpcnN0UmVuZGVyOiBib29sZWFuKTogUGxheWVyfHVuZGVmaW5lZHxudWxsO1xufVxuXG4vKipcbiAqIFRoZSBzdGF0ZSBvZiBhIGdpdmVuIHBsYXllclxuICpcbiAqIERvIG5vdCBjaGFuZ2UgdGhlIGluY3JlYXNpbmcgbmF0dXJlIG9mIHRoZSBudW1iZXJzIHNpbmNlIHRoZSBwbGF5ZXJcbiAqIGNvZGUgbWF5IGNvbXBhcmUgc3RhdGUgYnkgY2hlY2tpbmcgaWYgYSBudW1iZXIgaXMgaGlnaGVyIG9yIGxvd2VyIHRoYW5cbiAqIGEgY2VydGFpbiBudW1lcmljIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgZW51bSBQbGF5U3RhdGUge1xuICBQZW5kaW5nID0gMCxcbiAgUnVubmluZyA9IDEsXG4gIFBhdXNlZCA9IDIsXG4gIEZpbmlzaGVkID0gMTAwLFxuICBEZXN0cm95ZWQgPSAyMDBcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCB0aGF0IHN0b3JlcyBhbGwgdGhlIGFjdGl2ZSBwbGF5ZXJzIGFuZCBxdWV1ZWQgcGxheWVyIGZhY3RvcmllcyBwcmVzZW50IG9uIGFuIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxheWVyQ29udGV4dCBleHRlbmRzIEFycmF5PG51bGx8bnVtYmVyfFBsYXllcnxQbGF5ZXJCdWlsZGVyPiB7XG4gIFtQbGF5ZXJJbmRleC5Ob25CdWlsZGVyUGxheWVyc1N0YXJ0XTogbnVtYmVyO1xuICBbUGxheWVySW5kZXguQ2xhc3NNYXBQbGF5ZXJCdWlsZGVyUG9zaXRpb25dOiBQbGF5ZXJCdWlsZGVyfG51bGw7XG4gIFtQbGF5ZXJJbmRleC5DbGFzc01hcFBsYXllclBvc2l0aW9uXTogUGxheWVyfG51bGw7XG4gIFtQbGF5ZXJJbmRleC5TdHlsZU1hcFBsYXllckJ1aWxkZXJQb3NpdGlvbl06IFBsYXllckJ1aWxkZXJ8bnVsbDtcbiAgW1BsYXllckluZGV4LlN0eWxlTWFwUGxheWVyUG9zaXRpb25dOiBQbGF5ZXJ8bnVsbDtcbn1cblxuLyoqXG4gKiBEZXNpZ25lZCB0byBiZSB1c2VkIGFzIGFuIGluamVjdGlvbiBzZXJ2aWNlIHRvIGNhcHR1cmUgYWxsIGFuaW1hdGlvbiBwbGF5ZXJzLlxuICpcbiAqIFdoZW4gcHJlc2VudCBhbGwgYW5pbWF0aW9uIHBsYXllcnMgd2lsbCBiZSBwYXNzZWQgaW50byB0aGUgZmx1c2ggbWV0aG9kIGJlbG93LlxuICogVGhpcyBmZWF0dXJlIGlzIGRlc2lnbmVkIHRvIHNlcnZpY2UgYXBwbGljYXRpb24td2lkZSBhbmltYXRpb24gdGVzdGluZywgbGl2ZVxuICogZGVidWdnaW5nIGFzIHdlbGwgYXMgY3VzdG9tIGFuaW1hdGlvbiBjaG9yZW9ncmFwaGluZyB0b29scy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF5ZXJIYW5kbGVyIHtcbiAgLyoqXG4gICAqIERlc2lnbmVkIHRvIGtpY2sgb2ZmIHRoZSBwbGF5ZXIgYXQgdGhlIGVuZCBvZiBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqL1xuICBmbHVzaFBsYXllcnMoKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHBsYXllciBUaGUgcGxheWVyIHRoYXQgaGFzIGJlZW4gc2NoZWR1bGVkIHRvIHJ1biB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBhcyB0byB3aGVyZSB0aGUgcGxheWVyIHdhcyBib3VuZCB0b1xuICAgKi9cbiAgcXVldWVQbGF5ZXIocGxheWVyOiBQbGF5ZXIsIGNvbnRleHQ6IENvbXBvbmVudEluc3RhbmNlfERpcmVjdGl2ZUluc3RhbmNlfEhUTUxFbGVtZW50KTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUGxheWVySW5kZXgge1xuICAvLyBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIGluZGV4IHRoYXQgcmV2ZWFscyB3aGVyZSBwbGF5ZXJzIHN0YXJ0IGluIHRoZSBQbGF5ZXJDb250ZXh0XG4gIE5vbkJ1aWxkZXJQbGF5ZXJzU3RhcnQgPSAwLFxuICAvLyBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIHBsYXllciBidWlsZGVyIGxpdmVzICh3aGljaCBoYW5kbGVzIHtrZXk6dmFsdWV9IG1hcCBleHByZXNzaW9uKSBmb3JcbiAgLy8gY2xhc3Nlc1xuICBDbGFzc01hcFBsYXllckJ1aWxkZXJQb3NpdGlvbiA9IDEsXG4gIC8vIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbGFzdCBwbGF5ZXIgYXNzaWduZWQgdG8gdGhlIGNsYXNzIHBsYXllciBidWlsZGVyIGlzIHN0b3JlZFxuICBDbGFzc01hcFBsYXllclBvc2l0aW9uID0gMixcbiAgLy8gVGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBwbGF5ZXIgYnVpbGRlciBsaXZlcyAod2hpY2ggaGFuZGxlcyB7a2V5OnZhbHVlfSBtYXAgZXhwcmVzc2lvbikgZm9yXG4gIC8vIHN0eWxlc1xuICBTdHlsZU1hcFBsYXllckJ1aWxkZXJQb3NpdGlvbiA9IDMsXG4gIC8vIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbGFzdCBwbGF5ZXIgYXNzaWduZWQgdG8gdGhlIHN0eWxlIHBsYXllciBidWlsZGVyIGlzIHN0b3JlZFxuICBTdHlsZU1hcFBsYXllclBvc2l0aW9uID0gNCxcbiAgLy8gVGhlIHBvc2l0aW9uIHdoZXJlIGFueSBwbGF5ZXIgYnVpbGRlcnMgc3RhcnQgaW4gdGhlIFBsYXllckNvbnRleHRcbiAgUGxheWVyQnVpbGRlcnNTdGFydFBvc2l0aW9uID0gMSxcbiAgLy8gVGhlIHBvc2l0aW9uIHdoZXJlIG5vbiBtYXAtYmFzZWQgcGxheWVyIGJ1aWxkZXJzIHN0YXJ0IGluIHRoZSBQbGF5ZXJDb250ZXh0XG4gIFNpbmdsZVBsYXllckJ1aWxkZXJzU3RhcnRQb3NpdGlvbiA9IDUsXG4gIC8vIEZvciBlYWNoIHBsYXllciBidWlsZGVyIHRoZXJlIGlzIGEgcGxheWVyIGluIHRoZSBwbGF5ZXIgY29udGV4dCAodGhlcmVmb3JlIHNpemUgPSAyKVxuICBQbGF5ZXJBbmRQbGF5ZXJCdWlsZGVyc1R1cGxlU2l6ZSA9IDIsXG4gIC8vIFRoZSBwbGF5ZXIgZXhpc3RzIG5leHQgdG8gdGhlIHBsYXllciBidWlsZGVyIGluIHRoZSBsaXN0XG4gIFBsYXllck9mZnNldFBvc2l0aW9uID0gMSxcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBDb21wb25lbnRJbnN0YW5jZSA9IHt9O1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBEaXJlY3RpdmVJbnN0YW5jZSA9IHt9O1xuIl19