@angular/google-maps 19.0.0-next.4 → 19.0.0-next.6

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/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  /// <reference types="google.maps" />
2
2
 
3
3
  import { AfterContentInit } from '@angular/core';
4
- import { ElementRef } from '@angular/core';
5
4
  import { EventEmitter } from '@angular/core';
6
5
  import * as i0 from '@angular/core';
7
6
  import { NgZone } from '@angular/core';
@@ -243,7 +242,7 @@ export declare class GoogleMap implements OnChanges, OnInit, OnDestroy {
243
242
  * https://developers.google.com/maps/documentation/javascript/reference/map#Map.zoom_changed
244
243
  */
245
244
  readonly zoomChanged: Observable<void>;
246
- constructor(_elementRef: ElementRef, _ngZone: NgZone, platformId: Object);
245
+ constructor(...args: unknown[]);
247
246
  ngOnChanges(changes: SimpleChanges): void;
248
247
  ngOnInit(): void;
249
248
  private _initialize;
@@ -514,6 +513,26 @@ export declare class MapAdvancedMarker implements OnInit, OnChanges, OnDestroy,
514
513
  * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.click
515
514
  */
516
515
  readonly mapClick: Observable<google.maps.MapMouseEvent>;
516
+ /**
517
+ * This event is fired when the AdvancedMarkerElement is double-clicked.
518
+ */
519
+ readonly mapDblclick: Observable<google.maps.MapMouseEvent>;
520
+ /**
521
+ * This event is fired when the mouse moves out of the AdvancedMarkerElement.
522
+ */
523
+ readonly mapMouseout: Observable<google.maps.MapMouseEvent>;
524
+ /**
525
+ * This event is fired when the mouse moves over the AdvancedMarkerElement.
526
+ */
527
+ readonly mapMouseover: Observable<google.maps.MapMouseEvent>;
528
+ /**
529
+ * This event is fired when the mouse button is released over the AdvancedMarkerElement.
530
+ */
531
+ readonly mapMouseup: Observable<google.maps.MapMouseEvent>;
532
+ /**
533
+ * This event is fired when the AdvancedMarkerElement is right-clicked.
534
+ */
535
+ readonly mapRightclick: Observable<google.maps.MapMouseEvent>;
517
536
  /**
518
537
  * This event is repeatedly fired while the user drags the AdvancedMarkerElement.
519
538
  * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.drag
@@ -537,7 +556,7 @@ export declare class MapAdvancedMarker implements OnInit, OnChanges, OnDestroy,
537
556
  * See developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement
538
557
  */
539
558
  advancedMarker: google.maps.marker.AdvancedMarkerElement;
540
- constructor(_googleMap: GoogleMap, _ngZone: NgZone);
559
+ constructor(...args: unknown[]);
541
560
  ngOnInit(): void;
542
561
  private _initialize;
543
562
  ngOnChanges(changes: SimpleChanges): void;
@@ -548,7 +567,7 @@ export declare class MapAdvancedMarker implements OnInit, OnChanges, OnDestroy,
548
567
  /** Asserts that the map has been initialized. */
549
568
  private _assertInitialized;
550
569
  static ɵfac: i0.ɵɵFactoryDeclaration<MapAdvancedMarker, never>;
551
- static ɵdir: i0.ɵɵDirectiveDeclaration<MapAdvancedMarker, "map-advanced-marker", ["mapAdvancedMarker"], { "title": { "alias": "title"; "required": false; }; "position": { "alias": "position"; "required": false; }; "content": { "alias": "content"; "required": false; }; "gmpDraggable": { "alias": "gmpDraggable"; "required": false; }; "options": { "alias": "options"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; }, { "mapClick": "mapClick"; "mapDrag": "mapDrag"; "mapDragend": "mapDragend"; "mapDragstart": "mapDragstart"; "markerInitialized": "markerInitialized"; }, never, never, true, never>;
570
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MapAdvancedMarker, "map-advanced-marker", ["mapAdvancedMarker"], { "title": { "alias": "title"; "required": false; }; "position": { "alias": "position"; "required": false; }; "content": { "alias": "content"; "required": false; }; "gmpDraggable": { "alias": "gmpDraggable"; "required": false; }; "options": { "alias": "options"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; }, { "mapClick": "mapClick"; "mapDblclick": "mapDblclick"; "mapMouseout": "mapMouseout"; "mapMouseover": "mapMouseover"; "mapMouseup": "mapMouseup"; "mapRightclick": "mapRightclick"; "mapDrag": "mapDrag"; "mapDragend": "mapDragend"; "mapDragstart": "mapDragstart"; "markerInitialized": "markerInitialized"; }, never, never, true, never>;
552
571
  }
553
572
 
554
573
 
@@ -560,7 +579,7 @@ export declare interface MapAnchorPoint {
560
579
  export declare class MapBaseLayer implements OnInit, OnDestroy {
561
580
  protected readonly _map: GoogleMap;
562
581
  protected readonly _ngZone: NgZone;
563
- constructor(_map: GoogleMap, _ngZone: NgZone);
582
+ constructor(...args: unknown[]);
564
583
  ngOnInit(): void;
565
584
  ngOnDestroy(): void;
566
585
  private _assertInitialized;
@@ -683,7 +702,7 @@ export declare class MapCircle implements OnInit, OnDestroy {
683
702
  readonly circleRightclick: Observable<google.maps.MapMouseEvent>;
684
703
  /** Event emitted when the circle is initialized. */
685
704
  readonly circleInitialized: EventEmitter<google.maps.Circle>;
686
- constructor(_map: GoogleMap, _ngZone: NgZone);
705
+ constructor(...args: unknown[]);
687
706
  ngOnInit(): void;
688
707
  private _initialize;
689
708
  ngOnDestroy(): void;
@@ -757,7 +776,7 @@ export declare class MapDirectionsRenderer implements OnInit, OnChanges, OnDestr
757
776
  readonly directionsRendererInitialized: EventEmitter<google.maps.DirectionsRenderer>;
758
777
  /** The underlying google.maps.DirectionsRenderer object. */
759
778
  directionsRenderer?: google.maps.DirectionsRenderer;
760
- constructor(_googleMap: GoogleMap, _ngZone: NgZone);
779
+ constructor(...args: unknown[]);
761
780
  ngOnInit(): void;
762
781
  private _initialize;
763
782
  ngOnChanges(changes: SimpleChanges): void;
@@ -797,7 +816,7 @@ export declare interface MapDirectionsResponse {
797
816
  export declare class MapDirectionsService {
798
817
  private readonly _ngZone;
799
818
  private _directionsService;
800
- constructor(_ngZone: NgZone);
819
+ constructor(...args: unknown[]);
801
820
  /**
802
821
  * See
803
822
  * developers.google.com/maps/documentation/javascript/reference/directions
@@ -838,7 +857,7 @@ declare type MapEventManagerTarget = {
838
857
  export declare class MapGeocoder {
839
858
  private readonly _ngZone;
840
859
  private _geocoder;
841
- constructor(_ngZone: NgZone);
860
+ constructor(...args: unknown[]);
842
861
  /**
843
862
  * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder.geocode
844
863
  */
@@ -895,7 +914,7 @@ export declare class MapGroundOverlay implements OnInit, OnDestroy {
895
914
  readonly mapDblclick: Observable<google.maps.MapMouseEvent>;
896
915
  /** Event emitted when the ground overlay is initialized. */
897
916
  readonly groundOverlayInitialized: EventEmitter<google.maps.GroundOverlay>;
898
- constructor(_map: GoogleMap, _ngZone: NgZone);
917
+ constructor(...args: unknown[]);
899
918
  ngOnInit(): void;
900
919
  private _initialize;
901
920
  ngOnDestroy(): void;
@@ -952,7 +971,7 @@ export declare class MapHeatmapLayer implements OnInit, OnChanges, OnDestroy {
952
971
  heatmap?: google.maps.visualization.HeatmapLayer;
953
972
  /** Event emitted when the heatmap is initialized. */
954
973
  readonly heatmapInitialized: EventEmitter<google.maps.visualization.HeatmapLayer>;
955
- constructor(_googleMap: GoogleMap, _ngZone: NgZone);
974
+ constructor(...args: unknown[]);
956
975
  ngOnInit(): void;
957
976
  private _initialize;
958
977
  ngOnChanges(changes: SimpleChanges): void;
@@ -1030,7 +1049,7 @@ export declare class MapInfoWindow implements OnInit, OnDestroy {
1030
1049
  readonly zindexChanged: Observable<void>;
1031
1050
  /** Event emitted when the info window is initialized. */
1032
1051
  readonly infoWindowInitialized: EventEmitter<google.maps.InfoWindow>;
1033
- constructor(_googleMap: GoogleMap, _elementRef: ElementRef<HTMLElement>, _ngZone: NgZone);
1052
+ constructor(...args: unknown[]);
1034
1053
  ngOnInit(): void;
1035
1054
  private _initialize;
1036
1055
  ngOnDestroy(): void;
@@ -1109,7 +1128,7 @@ export declare class MapKmlLayer implements OnInit, OnDestroy {
1109
1128
  readonly statusChanged: Observable<void>;
1110
1129
  /** Event emitted when the KML layer is initialized. */
1111
1130
  readonly kmlLayerInitialized: EventEmitter<google.maps.KmlLayer>;
1112
- constructor(_map: GoogleMap, _ngZone: NgZone);
1131
+ constructor(...args: unknown[]);
1113
1132
  ngOnInit(): void;
1114
1133
  private _initialize;
1115
1134
  ngOnDestroy(): void;
@@ -1306,7 +1325,7 @@ export declare class MapMarker implements OnInit, OnChanges, OnDestroy, MapAncho
1306
1325
  * See developers.google.com/maps/documentation/javascript/reference/marker#Marker
1307
1326
  */
1308
1327
  marker?: google.maps.Marker;
1309
- constructor(_googleMap: GoogleMap, _ngZone: NgZone);
1328
+ constructor(...args: unknown[]);
1310
1329
  ngOnInit(): void;
1311
1330
  private _initialize;
1312
1331
  ngOnChanges(changes: SimpleChanges): void;
@@ -1455,7 +1474,7 @@ export declare class MapMarkerClusterer implements OnInit, AfterContentInit, OnC
1455
1474
  markerClusterer?: MarkerClusterer;
1456
1475
  /** Event emitted when the clusterer is initialized. */
1457
1476
  readonly markerClustererInitialized: EventEmitter<MarkerClusterer>;
1458
- constructor(_googleMap: GoogleMap, _ngZone: NgZone);
1477
+ constructor(...args: unknown[]);
1459
1478
  ngOnInit(): void;
1460
1479
  ngAfterContentInit(): void;
1461
1480
  ngOnChanges(changes: SimpleChanges): void;
@@ -1554,7 +1573,7 @@ export declare class MapPolygon implements OnInit, OnDestroy {
1554
1573
  readonly polygonRightclick: Observable<google.maps.PolyMouseEvent>;
1555
1574
  /** Event emitted when the polygon is initialized. */
1556
1575
  readonly polygonInitialized: EventEmitter<google.maps.Polygon>;
1557
- constructor(_map: GoogleMap, _ngZone: NgZone);
1576
+ constructor(...args: unknown[]);
1558
1577
  ngOnInit(): void;
1559
1578
  private _initialize;
1560
1579
  ngOnDestroy(): void;
@@ -1653,7 +1672,7 @@ export declare class MapPolyline implements OnInit, OnDestroy {
1653
1672
  readonly polylineRightclick: Observable<google.maps.PolyMouseEvent>;
1654
1673
  /** Event emitted when the polyline is initialized. */
1655
1674
  readonly polylineInitialized: EventEmitter<google.maps.Polyline>;
1656
- constructor(_map: GoogleMap, _ngZone: NgZone);
1675
+ constructor(...args: unknown[]);
1657
1676
  ngOnInit(): void;
1658
1677
  private _initialize;
1659
1678
  ngOnDestroy(): void;
@@ -1763,7 +1782,7 @@ export declare class MapRectangle implements OnInit, OnDestroy {
1763
1782
  readonly rectangleRightclick: Observable<google.maps.MapMouseEvent>;
1764
1783
  /** Event emitted when the rectangle is initialized. */
1765
1784
  readonly rectangleInitialized: EventEmitter<google.maps.Rectangle>;
1766
- constructor(_map: GoogleMap, _ngZone: NgZone);
1785
+ constructor(...args: unknown[]);
1767
1786
  ngOnInit(): void;
1768
1787
  private _initialize;
1769
1788
  ngOnDestroy(): void;
@@ -1817,7 +1836,7 @@ export declare class MapTrafficLayer implements OnInit, OnDestroy {
1817
1836
  set autoRefresh(autoRefresh: boolean);
1818
1837
  /** Event emitted when the traffic layer is initialized. */
1819
1838
  readonly trafficLayerInitialized: EventEmitter<google.maps.TrafficLayer>;
1820
- constructor(_map: GoogleMap, _ngZone: NgZone);
1839
+ constructor(...args: unknown[]);
1821
1840
  ngOnInit(): void;
1822
1841
  private _initialize;
1823
1842
  ngOnDestroy(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/google-maps",
3
- "version": "19.0.0-next.4",
3
+ "version": "19.0.0-next.6",
4
4
  "description": "Angular Google Maps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { Rule } from '@angular-devkit/schematics';
9
9
  export default function (): Rule;
@@ -4,7 +4,7 @@
4
4
  * Copyright Google LLC All Rights Reserved.
5
5
  *
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.io/license
7
+ * found in the LICENSE file at https://angular.dev/license
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.default = default_1;
@@ -13,4 +13,4 @@ function default_1() {
13
13
  // Also allows us to add more functionality in the future.
14
14
  return () => { };
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvZ29vZ2xlLW1hcHMvc2NoZW1hdGljcy9uZy1hZGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFJSCw0QkFJQztBQUpEO0lBQ0UsaUZBQWlGO0lBQ2pGLDBEQUEwRDtJQUMxRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUnVsZSB7XG4gIC8vIE5vb3Agc2NoZW1hdGljIHNvIHRoZSBDTEkgZG9lc24ndCB0aHJvdyBpZiB1c2VycyB0cnkgdG8gYG5nIGFkZGAgdGhpcyBwYWNrYWdlLlxuICAvLyBBbHNvIGFsbG93cyB1cyB0byBhZGQgbW9yZSBmdW5jdGlvbmFsaXR5IGluIHRoZSBmdXR1cmUuXG4gIHJldHVybiAoKSA9PiB7fTtcbn1cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvZ29vZ2xlLW1hcHMvc2NoZW1hdGljcy9uZy1hZGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFJSCw0QkFJQztBQUpEO0lBQ0UsaUZBQWlGO0lBQ2pGLDBEQUEwRDtJQUMxRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1J1bGV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFJ1bGUge1xuICAvLyBOb29wIHNjaGVtYXRpYyBzbyB0aGUgQ0xJIGRvZXNuJ3QgdGhyb3cgaWYgdXNlcnMgdHJ5IHRvIGBuZyBhZGRgIHRoaXMgcGFja2FnZS5cbiAgLy8gQWxzbyBhbGxvd3MgdXMgdG8gYWRkIG1vcmUgZnVuY3Rpb25hbGl0eSBpbiB0aGUgZnV0dXJlLlxuICByZXR1cm4gKCkgPT4ge307XG59XG4iXX0=
@@ -4,7 +4,7 @@
4
4
  * Copyright Google LLC All Rights Reserved.
5
5
  *
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.io/license
7
+ * found in the LICENSE file at https://angular.dev/license
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.default = default_1;
@@ -13,4 +13,4 @@ function default_1() {
13
13
  // Also allows us to add more functionality in the future.
14
14
  return () => { };
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvZ29vZ2xlLW1hcHMvc2NoZW1hdGljcy9uZy1hZGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFJSCw0QkFJQztBQUpEO0lBQ0UsaUZBQWlGO0lBQ2pGLDBEQUEwRDtJQUMxRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUnVsZSB7XG4gIC8vIE5vb3Agc2NoZW1hdGljIHNvIHRoZSBDTEkgZG9lc24ndCB0aHJvdyBpZiB1c2VycyB0cnkgdG8gYG5nIGFkZGAgdGhpcyBwYWNrYWdlLlxuICAvLyBBbHNvIGFsbG93cyB1cyB0byBhZGQgbW9yZSBmdW5jdGlvbmFsaXR5IGluIHRoZSBmdXR1cmUuXG4gIHJldHVybiAoKSA9PiB7fTtcbn1cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvZ29vZ2xlLW1hcHMvc2NoZW1hdGljcy9uZy1hZGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFJSCw0QkFJQztBQUpEO0lBQ0UsaUZBQWlGO0lBQ2pGLDBEQUEwRDtJQUMxRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1J1bGV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFJ1bGUge1xuICAvLyBOb29wIHNjaGVtYXRpYyBzbyB0aGUgQ0xJIGRvZXNuJ3QgdGhyb3cgaWYgdXNlcnMgdHJ5IHRvIGBuZyBhZGRgIHRoaXMgcGFja2FnZS5cbiAgLy8gQWxzbyBhbGxvd3MgdXMgdG8gYWRkIG1vcmUgZnVuY3Rpb25hbGl0eSBpbiB0aGUgZnV0dXJlLlxuICByZXR1cm4gKCkgPT4ge307XG59XG4iXX0=