@angular/core 14.2.0-next.0 → 14.2.0-next.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/esm2020/src/application_ref.mjs +2 -2
- package/esm2020/src/core_render3_private_export.mjs +4 -4
- package/esm2020/src/di/interface/defs.mjs +4 -1
- package/esm2020/src/render3/component_ref.mjs +4 -31
- package/esm2020/src/render3/definition.mjs +5 -5
- package/esm2020/src/render3/index.mjs +4 -4
- package/esm2020/src/render3/instructions/change_detection.mjs +3 -19
- package/esm2020/src/render3/instructions/shared.mjs +10 -50
- package/esm2020/src/render3/interfaces/view.mjs +1 -1
- package/esm2020/src/render3/jit/module.mjs +2 -6
- package/esm2020/src/render3/util/change_detection_utils.mjs +7 -3
- package/esm2020/src/render3/util/misc_utils.mjs +1 -7
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/fesm2015/core.mjs +23 -108
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +20 -106
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2020/core.mjs +23 -108
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +20 -106
- package/fesm2020/testing.mjs.map +1 -1
- package/index.d.ts +3 -97
- package/package.json +1 -1
- package/testing/index.d.ts +1 -1
- package/esm2020/src/render3/interfaces/player.mjs +0 -9
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.2.0-next.
|
|
2
|
+
* @license Angular v14.2.0-next.1
|
|
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
|
|
@@ -10344,6 +10340,8 @@ export declare function ɵisBoundToModule<C>(cf: ComponentFactory<C>): boolean;
|
|
|
10344
10340
|
*/
|
|
10345
10341
|
export declare function ɵisDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy): boolean;
|
|
10346
10342
|
|
|
10343
|
+
export declare function ɵisInjectable(type: any): boolean;
|
|
10344
|
+
|
|
10347
10345
|
export declare function ɵisListLikeIterable(obj: any): boolean;
|
|
10348
10346
|
|
|
10349
10347
|
/**
|
|
@@ -10478,17 +10476,6 @@ export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]
|
|
|
10478
10476
|
(...args: any[]): (cls: any) => any;
|
|
10479
10477
|
};
|
|
10480
10478
|
|
|
10481
|
-
/**
|
|
10482
|
-
* Marks the component as dirty (needing change detection). Marking a component dirty will
|
|
10483
|
-
* schedule a change detection on it at some point in the future.
|
|
10484
|
-
*
|
|
10485
|
-
* Marking an already dirty component as dirty won't do anything. Only one outstanding change
|
|
10486
|
-
* detection can be scheduled per component tree.
|
|
10487
|
-
*
|
|
10488
|
-
* @param component Component to mark as dirty.
|
|
10489
|
-
*/
|
|
10490
|
-
export declare function ɵmarkDirty(component: {}): void;
|
|
10491
|
-
|
|
10492
10479
|
|
|
10493
10480
|
export declare const ɵNG_COMP_DEF: string;
|
|
10494
10481
|
|
|
@@ -10663,69 +10650,6 @@ export declare interface ɵPipeDef<T> {
|
|
|
10663
10650
|
onDestroy: (() => void) | null;
|
|
10664
10651
|
}
|
|
10665
10652
|
|
|
10666
|
-
|
|
10667
|
-
/**
|
|
10668
|
-
* A shared interface which contains an animation player
|
|
10669
|
-
*/
|
|
10670
|
-
export declare interface ɵPlayer {
|
|
10671
|
-
parent?: ɵPlayer | null;
|
|
10672
|
-
state: ɵPlayState;
|
|
10673
|
-
play(): void;
|
|
10674
|
-
pause(): void;
|
|
10675
|
-
finish(): void;
|
|
10676
|
-
destroy(): void;
|
|
10677
|
-
addEventListener(state: ɵPlayState | string, cb: (data?: any) => any): void;
|
|
10678
|
-
}
|
|
10679
|
-
|
|
10680
|
-
/**
|
|
10681
|
-
* Used as a reference to build a player from a styling template binding
|
|
10682
|
-
* (`[style]` and `[class]`).
|
|
10683
|
-
*
|
|
10684
|
-
* The `fn` function will be called once any styling-related changes are
|
|
10685
|
-
* evaluated on an element and is expected to return a player that will
|
|
10686
|
-
* be then run on the element.
|
|
10687
|
-
*
|
|
10688
|
-
* `[style]`, `[style.prop]`, `[class]` and `[class.name]` template bindings
|
|
10689
|
-
* all accept a `PlayerFactory` as input and this player factories.
|
|
10690
|
-
*/
|
|
10691
|
-
export declare interface ɵPlayerFactory {
|
|
10692
|
-
'__brand__': 'Brand for PlayerFactory that nothing will match';
|
|
10693
|
-
}
|
|
10694
|
-
|
|
10695
|
-
/**
|
|
10696
|
-
* Designed to be used as an injection service to capture all animation players.
|
|
10697
|
-
*
|
|
10698
|
-
* When present all animation players will be passed into the flush method below.
|
|
10699
|
-
* This feature is designed to service application-wide animation testing, live
|
|
10700
|
-
* debugging as well as custom animation choreographing tools.
|
|
10701
|
-
*/
|
|
10702
|
-
export declare interface ɵPlayerHandler {
|
|
10703
|
-
/**
|
|
10704
|
-
* Designed to kick off the player at the end of change detection
|
|
10705
|
-
*/
|
|
10706
|
-
flushPlayers(): void;
|
|
10707
|
-
/**
|
|
10708
|
-
* @param player The player that has been scheduled to run within the application.
|
|
10709
|
-
* @param context The context as to where the player was bound to
|
|
10710
|
-
*/
|
|
10711
|
-
queuePlayer(player: ɵPlayer, context: ComponentInstance | DirectiveInstance | HTMLElement): void;
|
|
10712
|
-
}
|
|
10713
|
-
|
|
10714
|
-
/**
|
|
10715
|
-
* The state of a given player
|
|
10716
|
-
*
|
|
10717
|
-
* Do not change the increasing nature of the numbers since the player
|
|
10718
|
-
* code may compare state by checking if a number is higher or lower than
|
|
10719
|
-
* a certain numeric value.
|
|
10720
|
-
*/
|
|
10721
|
-
export declare const enum ɵPlayState {
|
|
10722
|
-
Pending = 0,
|
|
10723
|
-
Running = 1,
|
|
10724
|
-
Paused = 2,
|
|
10725
|
-
Finished = 100,
|
|
10726
|
-
Destroyed = 200
|
|
10727
|
-
}
|
|
10728
|
-
|
|
10729
10653
|
/**
|
|
10730
10654
|
* Profiler function which the runtime will invoke before and after user code.
|
|
10731
10655
|
*/
|
|
@@ -11313,24 +11237,6 @@ export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, InternalViewRef
|
|
|
11313
11237
|
attachToAppRef(appRef: ViewRefTracker): void;
|
|
11314
11238
|
}
|
|
11315
11239
|
|
|
11316
|
-
/**
|
|
11317
|
-
* Wait on component until it is rendered.
|
|
11318
|
-
*
|
|
11319
|
-
* This function returns a `Promise` which is resolved when the component's
|
|
11320
|
-
* change detection is executed. This is determined by finding the scheduler
|
|
11321
|
-
* associated with the `component`'s render tree and waiting until the scheduler
|
|
11322
|
-
* flushes. If nothing is scheduled, the function returns a resolved promise.
|
|
11323
|
-
*
|
|
11324
|
-
* Example:
|
|
11325
|
-
* ```
|
|
11326
|
-
* await whenRendered(myComponent);
|
|
11327
|
-
* ```
|
|
11328
|
-
*
|
|
11329
|
-
* @param component Component to wait upon
|
|
11330
|
-
* @returns Promise which resolves when the component is rendered.
|
|
11331
|
-
*/
|
|
11332
|
-
export declare function ɵwhenRendered(component: any): Promise<null>;
|
|
11333
|
-
|
|
11334
11240
|
/**
|
|
11335
11241
|
* Advances to an element for later binding instructions.
|
|
11336
11242
|
*
|
package/package.json
CHANGED
package/testing/index.d.ts
CHANGED
|
@@ -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
|