@awesome-cordova-plugins/onesignal 5.36.0 → 5.37.2

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
@@ -10,7 +10,7 @@ export interface OSNotification {
10
10
  */
11
11
  shown?: boolean;
12
12
  /**
13
- * **ANDROID** - Android Notification assigned to the notification. Can be used to cancel or replace the notification.
13
+ * ANDROID** - Android Notification assigned to the notification. Can be used to cancel or replace the notification.
14
14
  */
15
15
  androidNotificationId?: number;
16
16
  /**
@@ -22,7 +22,7 @@ export interface OSNotification {
22
22
  */
23
23
  displayType?: OSDisplayType;
24
24
  /**
25
- * **ANDROID** - Notification is a summary notification for a group this will contain all notification payloads it was created from.
25
+ * ANDROID** - Notification is a summary notification for a group this will contain all notification payloads it was created from.
26
26
  */
27
27
  groupedNotifications?: OSNotificationPayload[];
28
28
  app_id?: string;
@@ -88,7 +88,7 @@ export interface OSNotification {
88
88
  ios_category?: string;
89
89
  }
90
90
  /**
91
- * **ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
91
+ * ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
92
92
  */
93
93
  export declare enum OSLockScreenVisibility {
94
94
  /**
@@ -143,19 +143,19 @@ export interface OSNotificationPayload {
143
143
  */
144
144
  additionalData?: any;
145
145
  /**
146
- * **ANDROID** - Small icon resource name set on the notification.
146
+ * ANDROID** - Small icon resource name set on the notification.
147
147
  */
148
148
  smallIcon?: string;
149
149
  /**
150
- * **ANDROID** - Large icon set on the notification.
150
+ * ANDROID** - Large icon set on the notification.
151
151
  */
152
152
  largeIcon?: string;
153
153
  /**
154
- * **ANDROID** - Big picture image set on the notification.
154
+ * ANDROID** - Big picture image set on the notification.
155
155
  */
156
156
  bigPicture?: string;
157
157
  /**
158
- * **ANDROID** - Accent color shown around small notification icon on Android 5+ devices. ARGB format.
158
+ * ANDROID** - Accent color shown around small notification icon on Android 5+ devices. ARGB format.
159
159
  */
160
160
  smallIconAccentColor?: string;
161
161
  /**
@@ -167,16 +167,16 @@ export interface OSNotificationPayload {
167
167
  */
168
168
  sound: string;
169
169
  /**
170
- * **ANDROID** - Devices that have a notification LED will blink in this color. ARGB format.
170
+ * ANDROID** - Devices that have a notification LED will blink in this color. ARGB format.
171
171
  */
172
172
  ledColor?: string;
173
173
  lockScreenVisibility?: OSLockScreenVisibility;
174
174
  /**
175
- * **ANDROID** - Notifications with this same key will be grouped together as a single summary notification.
175
+ * ANDROID** - Notifications with this same key will be grouped together as a single summary notification.
176
176
  */
177
177
  groupKey?: string;
178
178
  /**
179
- * **ANDROID** - Summary text displayed in the summary notification.
179
+ * ANDROID** - Summary text displayed in the summary notification.
180
180
  */
181
181
  groupMessage?: string;
182
182
  /**
@@ -184,11 +184,11 @@ export interface OSNotificationPayload {
184
184
  */
185
185
  actionButtons: OSActionButton[];
186
186
  /**
187
- * **ANDROID** - The Google project number the notification was sent under.
187
+ * ANDROID** - The Google project number the notification was sent under.
188
188
  */
189
189
  fromProjectNumber?: string;
190
190
  /**
191
- * **ANDROID** - If a background image was set this object will be available.
191
+ * ANDROID** - If a background image was set this object will be available.
192
192
  */
193
193
  backgroundImageLayout?: OSBackgroundImageLayout;
194
194
  priority?: number;
@@ -210,7 +210,7 @@ export interface OSActionButton {
210
210
  */
211
211
  text: string;
212
212
  /**
213
- * **ANDROID** - Icon shown on the button.
213
+ * ANDROID** - Icon shown on the button.
214
214
  */
215
215
  icon: string;
216
216
  }
@@ -254,7 +254,7 @@ export interface OSPermissionSubscriptionState {
254
254
  subscriptionStatus: OSSubscriptionState;
255
255
  }
256
256
  /**
257
- * **ANDROID** - If a background image was set, this object will be available.
257
+ * ANDROID** - If a background image was set, this object will be available.
258
258
  */
259
259
  export interface OSBackgroundImageLayout {
260
260
  /**
@@ -381,8 +381,6 @@ export interface OSInAppMessageAction {
381
381
  *
382
382
  * 3. From the root of your project make the file executable:
383
383
  * `$ chmod +x hooks/copy_android_notification_icons.js`
384
- *
385
- *
386
384
  * @usage
387
385
  * ```typescript
388
386
  * import { OneSignal } from '@awesome-cordova-plugins/onesignal/ngx';
@@ -419,6 +417,7 @@ export interface OSInAppMessageAction {
419
417
  export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
420
418
  /**
421
419
  * constants to use in inFocusDisplaying()
420
+ *
422
421
  * @hidden
423
422
  */
424
423
  OSInFocusDisplayOption: {
@@ -437,7 +436,7 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
437
436
  /**
438
437
  * Callback to run when a notification is received, whether it was displayed or not.
439
438
  *
440
- * @return {Observable<OneSignalReceivedNotification>}
439
+ * @returns {Observable<OneSignalReceivedNotification>}
441
440
  */
442
441
  handleNotificationReceived(): Observable<OSNotification>;
443
442
  /**
@@ -445,17 +444,17 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
445
444
  * center (**iOS**), or when closing an Alert notification shown in the app (if InAppAlert is enabled in
446
445
  * inFocusDisplaying).
447
446
  *
448
- * @return {Observable<OneSignalOpenedNotification>}
447
+ * @returns {Observable<OneSignalOpenedNotification>}
449
448
  */
450
449
  handleNotificationOpened(): Observable<OSNotificationOpenedResult>;
451
450
  /**
452
451
  * Use to process an In-App Message the user just tapped on.
453
452
  *
454
- * @return {Observable<OSInAppMessageAction>}
453
+ * @returns {Observable<OSInAppMessageAction>}
455
454
  */
456
455
  handleInAppMessageClicked(): Observable<OSInAppMessageAction>;
457
456
  /**
458
- * **iOS** - Settings for iOS apps
457
+ * iOS** - Settings for iOS apps
459
458
  *
460
459
  * @param settings
461
460
  * kOSSettingsKeyAutoPrompt: boolean = true
@@ -463,6 +462,8 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
463
462
  *
464
463
  * kOSSettingsKeyInAppLaunchURL: boolean = false
465
464
  * Launch notifications with a launch URL as an in app webview.
465
+ * @param settings.kOSSettingsKeyAutoPrompt
466
+ * @param settings.kOSSettingsKeyInAppLaunchURL
466
467
  * @returns {any}
467
468
  */
468
469
  iOSSettings(settings: {
@@ -477,13 +478,14 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
477
478
  endInit(): any;
478
479
  /**
479
480
  * Prompt the user for notification permissions. Callback fires as soon as the user accepts or declines notifications.
481
+ *
480
482
  * @returns {Promise<boolean>}
481
483
  */
482
484
  promptForPushNotificationsWithUserResponse(): Promise<boolean>;
483
485
  /**
484
486
  * Retrieve a list of tags that have been set on the user from the OneSignal server.
485
487
  *
486
- * **Quirk**: You must wait for `getTags` to resolve before calling it again, as the plugin will only process the last method call and discard any previous ones.
488
+ * Quirk**: You must wait for `getTags` to resolve before calling it again, as the plugin will only process the last method call and discard any previous ones.
487
489
  *
488
490
  * @returns {Promise<any>} Returns a Promise that resolves when tags are recieved.
489
491
  */
@@ -508,6 +510,8 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
508
510
  *
509
511
  * @param {string} Key of your choosing to create or update.
510
512
  * @param {string} Value to set on the key. NOTE: Passing in a blank String deletes the key, you can also call deleteTag.
513
+ * @param key
514
+ * @param value
511
515
  */
512
516
  sendTag(key: string, value: string): void;
513
517
  /**
@@ -515,18 +519,21 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
515
519
  * Recommend using sendTags over sendTag if you need to set more than one tag on a user at a time.
516
520
  *
517
521
  * @param {string} Pass a json object with key/value pairs like: {key: "value", key2: "value2"}
522
+ * @param json
518
523
  */
519
524
  sendTags(json: any): void;
520
525
  /**
521
526
  * Deletes a tag that was previously set on a user with `sendTag` or `sendTags`. Use `deleteTags` if you need to delete more than one.
522
527
  *
523
528
  * @param {string} Key to remove.
529
+ * @param key
524
530
  */
525
531
  deleteTag(key: string): void;
526
532
  /**
527
533
  * Deletes tags that were previously set on a user with `sendTag` or `sendTags`.
528
534
  *
529
535
  * @param {string[]} Keys to remove.
536
+ * @param keys
530
537
  */
531
538
  deleteTags(keys: string[]): void;
532
539
  /**
@@ -542,6 +549,7 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
542
549
  * Passing false means that the device will only vibrate lightly when the device is in it's vibrate only mode.
543
550
  *
544
551
  * @param {boolean} false to disable vibrate, true to re-enable it.
552
+ * @param enable
545
553
  */
546
554
  enableVibrate(enable: boolean): void;
547
555
  /**
@@ -552,6 +560,7 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
552
560
  * Passing false means that the device will only vibrate unless the device is set to a total silent mode.
553
561
  *
554
562
  * @param {boolean} false to disable sound, true to re-enable it.
563
+ * @param enable
555
564
  */
556
565
  enableSound(enable: boolean): void;
557
566
  /**
@@ -578,11 +587,13 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
578
587
  /**
579
588
  *
580
589
  * @param {notificationObj} Parameters see POST [documentation](https://documentation.onesignal.com/v2.0/docs/notifications-create-notification)
590
+ * @param notificationObj
581
591
  * @returns {Promise<any>} Returns a Promise that resolves if the notification was send successfully.
582
592
  */
583
593
  postNotification(notificationObj: OSNotification): Promise<any>;
584
594
  /**
585
595
  * Cancels a single OneSignal notification based on its Android notification integer id. Use instead of NotificationManager.cancel(id); otherwise the notification will be restored when your app is restarted.
596
+ *
586
597
  * @param notificationId {string}
587
598
  */
588
599
  cancelNotification(notificationId: string): void;
@@ -602,6 +613,9 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
602
613
  * The higher the value the more information is shown.
603
614
  *
604
615
  * @param {loglevel} contains two properties: logLevel (for console logging) and visualLevel (for dialog messages)
616
+ * @param logLevel
617
+ * @param logLevel.logLevel
618
+ * @param logLevel.visualLevel
605
619
  */
606
620
  setLogLevel(logLevel: {
607
621
  logLevel: number;
@@ -609,6 +623,7 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
609
623
  }): void;
610
624
  /**
611
625
  * Disable or enable location collection (Defaults to enabled) if your app has location permission.
626
+ *
612
627
  * @param shared {boolean}
613
628
  */
614
629
  setLocationShared(shared: boolean): void;
@@ -618,7 +633,8 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
618
633
  * - Notification permission prompt shown
619
634
  * - The user accepting or declining the permission prompt
620
635
  * - Enabling/disabling notifications for your app in the device Settings after returning to your app.
621
- * @return {Observable<any>}
636
+ *
637
+ * @returns {Observable<any>}
622
638
  */
623
639
  addPermissionObserver(): Observable<any>;
624
640
  /**
@@ -628,11 +644,15 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
628
644
  * - Getting a player / user id from OneSignal
629
645
  * - OneSignal.setSubscription is called
630
646
  * - User disables or enables notifications
631
- * @return {Observable<any>}
647
+ *
648
+ * @returns {Observable<any>}
632
649
  */
633
650
  addSubscriptionObserver(): Observable<any>;
634
651
  /**
635
652
  * Clears all OneSignal notifications
653
+ *
654
+ * @param email
655
+ * @param emailAuthToken
636
656
  */
637
657
  setEmail(email: string, emailAuthToken?: string): Promise<any>;
638
658
  /**
@@ -646,7 +666,8 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
646
666
  * - Getting a player / user id from OneSignal
647
667
  * - OneSignal.setSubscription is called
648
668
  * - User disables or enables notifications
649
- * @return {Observable<any>}
669
+ *
670
+ * @returns {Observable<any>}
650
671
  */
651
672
  addEmailSubscriptionObserver(): Observable<any>;
652
673
  /**
@@ -656,23 +677,27 @@ export declare class OneSignalOriginal extends AwesomeCordovaNativePlugin {
656
677
  /**
657
678
  * Allows you to delay the initialization of the SDK until the user provides privacy consent.
658
679
  * The SDK will not be fully initialized until the provideUserConsent(true) method is called.
680
+ *
659
681
  * @param {boolean} required
660
682
  */
661
683
  setRequiresUserPrivacyConsent(required: boolean): void;
662
684
  /**
663
685
  * If your application is set to require the user's privacy consent, you can provide this consent using this method.
664
686
  * Until you call provideUserConsent(true), the SDK will not fully initialize and will not send any data to OneSignal.
687
+ *
665
688
  * @param {boolean} granted
666
689
  */
667
690
  provideUserConsent(granted: boolean): void;
668
691
  /**
669
692
  * Accepts a callback, which returns a boolean variable indicating if the user has given privacy consent yet.
693
+ *
670
694
  * @param {Function} callback
671
695
  */
672
696
  userProvidedPrivacyConsent(callback: Function): void;
673
697
  /**
674
698
  * Allows you to use your own system's user ID's to send push notifications to your users.
675
699
  * To tie a user to a given user ID, you can use this method.
700
+ *
676
701
  * @param {string} externalId
677
702
  */
678
703
  setExternalUserId(externalId: string): void;
package/index.js CHANGED
@@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || (function () {
14
14
  import { AwesomeCordovaNativePlugin, cordova } from '@awesome-cordova-plugins/core';
15
15
  import { Observable } from 'rxjs';
16
16
  /**
17
- * **ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
17
+ * ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
18
18
  */
19
19
  export var OSLockScreenVisibility;
20
20
  (function (OSLockScreenVisibility) {
@@ -60,6 +60,7 @@ var OneSignalOriginal = /** @class */ (function (_super) {
60
60
  var _this = _super !== null && _super.apply(this, arguments) || this;
61
61
  /**
62
62
  * constants to use in inFocusDisplaying()
63
+ *
63
64
  * @hidden
64
65
  */
65
66
  _this.OSInFocusDisplayOption = {
@@ -120,4 +121,4 @@ var OneSignalOriginal = /** @class */ (function (_super) {
120
121
  }(AwesomeCordovaNativePlugin));
121
122
  var OneSignal = new OneSignalOriginal();
122
123
  export { OneSignal };
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvb25lc2lnbmFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLHVDQUErQyxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUEwRmxDOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksc0JBYVg7QUFiRCxXQUFZLHNCQUFzQjtJQUNoQzs7T0FFRztJQUNILHVFQUFVLENBQUE7SUFDVjs7T0FFRztJQUNILHlFQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHdFQUFXLENBQUE7QUFDYixDQUFDLEVBYlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQWFqQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFhWDtBQWJELFdBQVksYUFBYTtJQUN2Qjs7T0FFRztJQUNILGlEQUFRLENBQUE7SUFDUjs7T0FFRztJQUNILDZEQUFjLENBQUE7SUFDZDs7T0FFRztJQUNILGlFQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFiVyxhQUFhLEtBQWIsYUFBYSxRQWF4QjtBQThLRCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLG1EQUFVLENBQUE7SUFDViwyREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2Qjs7SUF5SThCLDZCQUEwQjs7O1FBQ3ZEOzs7V0FHRztRQUNILDRCQUFzQixHQUFHO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1lBQ1AsVUFBVSxFQUFFLENBQUM7WUFDYixZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDOzs7SUFVRiw2QkFBUyxhQUFDLEtBQWEsRUFBRSxtQkFBNEI7SUFZckQsOENBQTBCO0lBYzFCLDRDQUF3QjtJQVl4Qiw2Q0FBeUI7SUFtQnpCLCtCQUFXLGFBQUMsUUFBc0Y7SUFVbEcsMkJBQU87SUFXUCw4REFBMEM7SUFZMUMsMkJBQU87SUFlUCwwQkFBTTtJQVlOLDJCQUFPLGFBQUMsR0FBVyxFQUFFLEtBQWE7SUFTbEMsNEJBQVEsYUFBQyxJQUFTO0lBUWxCLDZCQUFTLGFBQUMsR0FBVztJQVFyQiw4QkFBVSxhQUFDLElBQWM7SUFPekIsZ0RBQTRCO0lBWTVCLGlDQUFhLGFBQUMsTUFBZTtJQVk3QiwrQkFBVyxhQUFDLE1BQWU7SUFVM0IscUNBQWlCLGFBQUMsYUFBNEI7SUFXOUMsbUNBQWUsYUFBQyxNQUFlO0lBUS9CLGtEQUE4QjtJQVU5QixvQ0FBZ0IsYUFBQyxlQUErQjtJQVNoRCxzQ0FBa0IsYUFBQyxjQUFzQjtJQU16QyxrQ0FBYztJQU9kLG1DQUFlLGFBQUMsS0FBYTtJQVc3QiwrQkFBVyxhQUFDLFFBQW1EO0lBTy9ELHFDQUFpQixhQUFDLE1BQWU7SUFhakMseUNBQXFCO0lBZ0JyQiwyQ0FBdUI7SUFRdkIsNEJBQVEsYUFBQyxLQUFhLEVBQUUsY0FBdUI7SUFRL0MsK0JBQVc7SUFnQlgsZ0RBQTRCO0lBUTVCLCtDQUEyQjtJQVEzQixpREFBNkIsYUFBQyxRQUFpQjtJQVEvQyxzQ0FBa0IsYUFBQyxPQUFnQjtJQU9uQyw4Q0FBMEIsYUFBQyxRQUFrQjtJQVE3QyxxQ0FBaUIsYUFBQyxVQUFrQjtJQU1wQyx3Q0FBb0I7SUFXcEIsOEJBQVUsYUFBQyxHQUFXLEVBQUUsS0FBK0I7SUFVdkQsK0JBQVcsYUFBQyxRQUFnQjtJQVU1Qix1Q0FBbUIsYUFBQyxHQUFXO0lBVS9CLHlDQUFxQixhQUFDLElBQWM7SUFTcEMseUNBQXFCLGFBQUMsR0FBVztJQWFqQyxzQ0FBa0IsYUFBQyxLQUFjOzs7Ozs7b0JBaDNCbkM7RUF3YitCLDBCQUEwQjtTQUE1QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZG92YSwgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4sIFBsdWdpbiB9IGZyb20gJ0Bhd2Vzb21lLWNvcmRvdmEtcGx1Z2lucy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBPU05vdGlmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBXYXMgYXBwIGluIGZvY3VzLlxuICAgKi9cbiAgaXNBcHBJbkZvY3VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdhcyBub3RpZmljYXRpb24gc2hvd24gdG8gdGhlIHVzZXIuIFdpbGwgYmUgZmFsc2UgZm9yIHNpbGVudCBub3RpZmljYXRpb25zLlxuICAgKi9cbiAgc2hvd24/OiBib29sZWFuO1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBBbmRyb2lkIE5vdGlmaWNhdGlvbiBhc3NpZ25lZCB0byB0aGUgbm90aWZpY2F0aW9uLiBDYW4gYmUgdXNlZCB0byBjYW5jZWwgb3IgcmVwbGFjZSB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgYW5kcm9pZE5vdGlmaWNhdGlvbklkPzogbnVtYmVyO1xuICAvKipcbiAgICogUGF5bG9hZCByZWNlaXZlZCBmcm9tIE9uZVNpZ25hbC5cbiAgICovXG4gIHBheWxvYWQ/OiBPU05vdGlmaWNhdGlvblBheWxvYWQ7XG4gIC8qKlxuICAgKiBIb3cgdGhlIG5vdGlmaWNhdGlvbiB3YXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBDYW4gYmUgc2V0IHRvIGBOb3RpZmljYXRpb25gLCBgSW5BcHBBbGVydGAsIG9yIGBOb25lYCBpZiBpdCB3YXMgbm90IGRpc3BsYXllZC5cbiAgICovXG4gIGRpc3BsYXlUeXBlPzogT1NEaXNwbGF5VHlwZTtcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gTm90aWZpY2F0aW9uIGlzIGEgc3VtbWFyeSBub3RpZmljYXRpb24gZm9yIGEgZ3JvdXAgdGhpcyB3aWxsIGNvbnRhaW4gYWxsIG5vdGlmaWNhdGlvbiBwYXlsb2FkcyBpdCB3YXMgY3JlYXRlZCBmcm9tLlxuICAgKi9cbiAgZ3JvdXBlZE5vdGlmaWNhdGlvbnM/OiBPU05vdGlmaWNhdGlvblBheWxvYWRbXTtcbiAgYXBwX2lkPzogc3RyaW5nO1xuICBjb250ZW50cz86IGFueTtcbiAgaGVhZGluZ3M/OiBhbnk7XG4gIGlzSW9zPzogYm9vbGVhbjtcbiAgaXNBbmRyb2lkPzogYm9vbGVhbjtcbiAgaXNXUD86IGJvb2xlYW47XG4gIGlzV1BfV05TPzogYm9vbGVhbjtcbiAgaXNBZG0/OiBib29sZWFuO1xuICBpc0Nocm9tZT86IGJvb2xlYW47XG4gIGlzQ2hyb21lV2ViPzogYm9vbGVhbjtcbiAgaXNTYWZhcmk/OiBib29sZWFuO1xuICBpc0FueVdlYj86IGJvb2xlYW47XG4gIGluY2x1ZGVkX3NlZ21lbnRzPzogc3RyaW5nW107XG4gIGV4Y2x1ZGVkX3NlZ21lbnRzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfcGxheWVyX2lkcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX2lvc190b2tlbnM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9hbmRyb2lkX3JlZ19pZHM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV93cF91cmlzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfd3Bfd25zX3VyaXM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9hbWF6b25fcmVnX2lkcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX2Nocm9tZV9yZWdfaWRzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfY2hyb21lX3dlYl9yZWdfaWRzPzogc3RyaW5nW107XG4gIGFwcF9pZHM/OiBzdHJpbmdbXTtcbiAgdGFncz86IGFueVtdO1xuICBpb3NfYmFkZ2VUeXBlPzogc3RyaW5nO1xuICBpb3NfYmFkZ2VDb3VudD86IG51bWJlcjtcbiAgaW9zX3NvdW5kPzogc3RyaW5nO1xuICBhbmRyb2lkX3NvdW5kPzogc3RyaW5nO1xuICBhZG1fc291bmQ/OiBzdHJpbmc7XG4gIHdwX3NvdW5kPzogc3RyaW5nO1xuICB3cF93bnNfc291bmQ/OiBzdHJpbmc7XG4gIGRhdGE/OiBhbnk7XG4gIGJ1dHRvbnM/OiBhbnk7XG4gIGNvbGxhcHNlX2lkPzogc3RyaW5nO1xuICBzbWFsbF9pY29uPzogc3RyaW5nO1xuICBsYXJnZV9pY29uPzogc3RyaW5nO1xuICBiaWdfcGljdHVyZT86IHN0cmluZztcbiAgYWRtX3NtYWxsX2ljb24/OiBzdHJpbmc7XG4gIGFkbV9sYXJnZV9pY29uPzogc3RyaW5nO1xuICBhZG1fYmlnX3BpY3R1cmU/OiBzdHJpbmc7XG4gIGNocm9tZV9pY29uPzogc3RyaW5nO1xuICBjaHJvbWVfYmlnX3BpY3R1cmU/OiBzdHJpbmc7XG4gIGNocm9tZV93ZWJfaWNvbj86IHN0cmluZztcbiAgZmlyZWZveF9pY29uPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIHNlbmRfYWZ0ZXI/OiBzdHJpbmc7XG4gIGRlbGF5ZWRfb3B0aW9uPzogc3RyaW5nO1xuICBkZWxpdmVyeV90aW1lX29mX2RheT86IHN0cmluZztcbiAgYW5kcm9pZF9sZWRfY29sb3I/OiBzdHJpbmc7XG4gIGFuZHJvaWRfYWNjZW50X2NvbG9yPzogc3RyaW5nO1xuICBhbmRyb2lkX3Zpc2liaWxpdHk/OiBudW1iZXI7XG4gIGNvbnRlbnRfYXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgYW1hem9uX2JhY2tncm91bmRfZGF0YT86IGJvb2xlYW47XG4gIHRlbXBsYXRlX2lkPzogc3RyaW5nO1xuICBhbmRyb2lkX2dyb3VwPzogc3RyaW5nO1xuICBhbmRyb2lkX2dyb3VwX21lc3NhZ2U/OiBhbnk7XG4gIGFkbV9ncm91cD86IHN0cmluZztcbiAgYWRtX2dyb3VwX21lc3NhZ2U/OiBhbnk7XG4gIHR0bD86IG51bWJlcjtcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIGlvc19jYXRlZ29yeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiAqKkFORFJPSUQqKiAtIFByaXZhY3kgc2V0dGluZyBmb3IgaG93IHRoZSBub3RpZmljYXRpb24gc2hvdWxkIGJlIHNob3duIG9uIHRoZSBsb2Nrc2NyZWVuIG9mIEFuZHJvaWQgNSsgZGV2aWNlcy5cbiAqL1xuZXhwb3J0IGVudW0gT1NMb2NrU2NyZWVuVmlzaWJpbGl0eSB7XG4gIC8qKlxuICAgKiBGdWxseSB2aXNpYmxlIChkZWZhdWx0KVxuICAgKi9cbiAgUHVibGljID0gMSxcbiAgLyoqXG4gICAqIENvbnRlbnRzIGFyZSBoaWRkZW5cbiAgICovXG4gIFByaXZhdGUgPSAwLFxuICAvKipcbiAgICogTm90IHNob3duXG4gICAqL1xuICBTZWNyZXQgPSAtMSxcbn1cblxuLyoqXG4gKiBIb3cgdGhlIG5vdGlmaWNhdGlvbiB3YXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBQYXJ0IG9mIE9TTm90aWZpY2F0aW9uLiBTZWUgaW5Gb2N1c0Rpc3BsYXlpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGVudW0gT1NEaXNwbGF5VHlwZSB7XG4gIC8qKlxuICAgKiBub3RpZmljYXRpb24gaXMgc2lsZW50LCBvciBpbkZvY3VzRGlzcGxheWluZyBpcyBkaXNhYmxlZC5cbiAgICovXG4gIE5vbmUgPSAwLFxuICAvKipcbiAgICogKCoqREVGQVVMVCoqKSAtIG5hdGl2ZSBhbGVydCBkaWFsb2cgZGlzcGxheS5cbiAgICovXG4gIEluQXBwQWxlcnQgPSAxLFxuICAvKipcbiAgICogbmF0aXZlIG5vdGlmaWNhdGlvbiBkaXNwbGF5LlxuICAgKi9cbiAgTm90aWZpY2F0aW9uID0gMixcbn1cblxuLyoqXG4gKiBDb250ZW50cyBhbmQgc2V0dGluZ3Mgb2YgdGhlIG5vdGlmaWNhdGlvbiB0aGUgdXNlciByZWNlaXZlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU05vdGlmaWNhdGlvblBheWxvYWQge1xuICAvKipcbiAgICogT25lU2lnbmFsIG5vdGlmaWNhdGlvbiBVVUlELlxuICAgKi9cbiAgbm90aWZpY2F0aW9uSUQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRpdGxlIG9mIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogQm9keSBvZiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgYm9keTogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIGFkZGl0aW9uYWwgZGF0YSB0aGF0IHdhcyBzZW50IHdpdGggdGhlIG5vdGlmaWNhdGlvbi4gU2V0IG9uIHRoZSBkYXNoYm9hcmQgdW5kZXIgT3B0aW9ucyA+IEFkZGl0aW9uYWwgRGF0YVxuICAgKiBvciB3aXRoIHRoZSAnZGF0YScgZmllbGQgb24gdGhlIFJFU1QgQVBJLlxuICAgKi9cbiAgYWRkaXRpb25hbERhdGE/OiBhbnk7XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIFNtYWxsIGljb24gcmVzb3VyY2UgbmFtZSBzZXQgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHNtYWxsSWNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gTGFyZ2UgaWNvbiBzZXQgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGxhcmdlSWNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gQmlnIHBpY3R1cmUgaW1hZ2Ugc2V0IG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBiaWdQaWN0dXJlPzogc3RyaW5nO1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBBY2NlbnQgY29sb3Igc2hvd24gYXJvdW5kIHNtYWxsIG5vdGlmaWNhdGlvbiBpY29uIG9uIEFuZHJvaWQgNSsgZGV2aWNlcy4gQVJHQiBmb3JtYXQuXG4gICAqL1xuICBzbWFsbEljb25BY2NlbnRDb2xvcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCB0byBvcGVuIHdoZW4gb3BlbmluZyB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgbGF1bmNoVVJMPzogc3RyaW5nO1xuICAvKipcbiAgICogU291bmQgcmVzb3VyY2UgdG8gcGxheSB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgc2hvd24uXG4gICAqL1xuICBzb3VuZDogc3RyaW5nO1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBEZXZpY2VzIHRoYXQgaGF2ZSBhIG5vdGlmaWNhdGlvbiBMRUQgd2lsbCBibGluayBpbiB0aGlzIGNvbG9yLiBBUkdCIGZvcm1hdC5cbiAgICovXG4gIGxlZENvbG9yPzogc3RyaW5nO1xuICBsb2NrU2NyZWVuVmlzaWJpbGl0eT86IE9TTG9ja1NjcmVlblZpc2liaWxpdHk7XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIE5vdGlmaWNhdGlvbnMgd2l0aCB0aGlzIHNhbWUga2V5IHdpbGwgYmUgZ3JvdXBlZCB0b2dldGhlciBhcyBhIHNpbmdsZSBzdW1tYXJ5IG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGdyb3VwS2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBTdW1tYXJ5IHRleHQgZGlzcGxheWVkIGluIHRoZSBzdW1tYXJ5IG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGdyb3VwTWVzc2FnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgYWN0aW9uIGJ1dHRvbnMgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGFjdGlvbkJ1dHRvbnM6IE9TQWN0aW9uQnV0dG9uW107XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIFRoZSBHb29nbGUgcHJvamVjdCBudW1iZXIgdGhlIG5vdGlmaWNhdGlvbiB3YXMgc2VudCB1bmRlci5cbiAgICovXG4gIGZyb21Qcm9qZWN0TnVtYmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBJZiBhIGJhY2tncm91bmQgaW1hZ2Ugd2FzIHNldCB0aGlzIG9iamVjdCB3aWxsIGJlIGF2YWlsYWJsZS5cbiAgICovXG4gIGJhY2tncm91bmRJbWFnZUxheW91dD86IE9TQmFja2dyb3VuZEltYWdlTGF5b3V0O1xuICBwcmlvcml0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIExpc3Qgb2YgYWN0aW9uIGJ1dHRvbnMgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHJhd1BheWxvYWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBMaXN0IG9mIGFjdGlvbiBidXR0b25zIG9uIHRoZSBub3RpZmljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NBY3Rpb25CdXR0b24ge1xuICAvKipcbiAgICogSWQgYXNzaWduZWQgdG8gdGhlIGJ1dHRvbi5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXh0IHNob3cgb24gdGhlIGJ1dHRvbiB0byB0aGUgdXNlci5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gSWNvbiBzaG93biBvbiB0aGUgYnV0dG9uLlxuICAgKi9cbiAgaWNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9TUGVybWlzc2lvblN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NQZXJtaXNzaW9uU3RhdGUge1xuICAvKipcbiAgICogVXNlciB3YXMgcHJvbXB0ZWQuXG4gICAqL1xuICBoYXNQcm9tcHRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBlcm1pc3Npb25zIFN0YXR1cyAoaU9TIE9ubHkpXG4gICAqL1xuICBzdGF0dXM6IGFueTtcbiAgLyoqXG4gICAqIFBlcm1pc3Npb25zIFN0YXRlIChBbmRyb2lkIE9ubHkpXG4gICAqL1xuICBzdGF0ZTogYW55O1xufVxuXG4vKipcbiAqIE9TU3Vic2NyaXB0aW9uU3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU1N1YnNjcmlwdGlvblN0YXRlIHtcbiAgc3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgdXNlclN1YnNjcmlwdGlvblNldHRpbmc6IGFueTtcbiAgdXNlcklkOiBhbnk7XG4gIHB1c2hUb2tlbjogYW55O1xufVxuXG4vKipcbiAqIFN1YnNjcmlwdGlvbiBhbmQgcGVybWlzc2lvbnMgc3RhdHVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NQZXJtaXNzaW9uU3Vic2NyaXB0aW9uU3RhdGUge1xuICAvKipcbiAgICogSWQgYXNzaWduZWQgdG8gdGhlIGJ1dHRvbi5cbiAgICovXG4gIHBlcm1pc3Npb25TdGF0dXM6IE9TUGVybWlzc2lvblN0YXRlO1xuICAvKipcbiAgICogVGV4dCBzaG93IG9uIHRoZSBidXR0b24gdG8gdGhlIHVzZXIuXG4gICAqL1xuICBzdWJzY3JpcHRpb25TdGF0dXM6IE9TU3Vic2NyaXB0aW9uU3RhdGU7XG59XG5cbi8qKlxuICogKipBTkRST0lEKiogLSBJZiBhIGJhY2tncm91bmQgaW1hZ2Ugd2FzIHNldCwgdGhpcyBvYmplY3Qgd2lsbCBiZSBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NCYWNrZ3JvdW5kSW1hZ2VMYXlvdXQge1xuICAvKipcbiAgICogSW1hZ2UgVVJMIG9yIG5hbWUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbiAgICovXG4gIGltYWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXh0IGNvbG9yIG9mIHRoZSB0aXRsZSBvbiB0aGUgbm90aWZpY2F0aW9uLiBBUkdCIEZvcm1hdC5cbiAgICovXG4gIHRpdGxlVGV4dENvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXh0IGNvbG9yIG9mIHRoZSBib2R5IG9uIHRoZSBub3RpZmljYXRpb24uIEFSR0IgRm9ybWF0LlxuICAgKi9cbiAgYm9keVRleHRDb2xvcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIGEgbm90aWZpY2F0aW9uIHRoZSB1c2VyIHJlY2VpdmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TTm90aWZpY2F0aW9uT3BlbmVkUmVzdWx0IHtcbiAgYWN0aW9uOiB7XG4gICAgLyoqXG4gICAgICogV2FzIHRoZSBub3RpZmljYXRpb24gb3BlbmVkIG5vcm1hbGx5IChgT3BlbmVkYCkgb3Igd2FzIGEgYnV0dG9uIHByZXNzZWQgb24gdGhlIG5vdGlmaWNhdGlvbiAoYEFjdGlvblRha2VuYCkuXG4gICAgICovXG4gICAgdHlwZTogT1NBY3Rpb25UeXBlO1xuICAgIC8qKlxuICAgICAqIElmIGB0eXBlYCA9PSBgQWN0aW9uVGFrZW5gIHRoZW4gdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGlkIG9mIHRoZSBidXR0b24gcHJlc3NlZC5cbiAgICAgKi9cbiAgICBhY3Rpb25JRD86IHN0cmluZztcbiAgfTtcbiAgbm90aWZpY2F0aW9uOiBPU05vdGlmaWNhdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gT1NBY3Rpb25UeXBlIHtcbiAgT3BlbmVkID0gMCxcbiAgQWN0aW9uVGFrZSA9IDEsXG59XG5cbi8qKlxuICogRGV0YWlscyBhYm91dCB0aGUgSW4tQXBwIE1lc3NhZ2UgYWN0aW9uIGVsZW1lbnQgKGJ1dHRvbiBvciBpbWFnZSkgdGhhdCB3YXMgdGFwcGVkIG9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TSW5BcHBNZXNzYWdlQWN0aW9uIHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGNsaWNrIG5hbWUgZGVmaW5lZCBmb3IgdGhlIGFjdGlvbiBlbGVtZW50LiBudWxsIG9yIG5pbCAoaU9TKSBpZiBub3Qgc2V0LlxuICAgKi9cbiAgY2xpY2tfbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgVVJMIHRoYXQgb3BlbnMgd2hlbiB0aGUgYWN0aW9uIHRha2VzIHBsYWNlLiBudWxsIG9yIG5pbCAoaU9TKSBpZiBub3Qgc2V0LlxuICAgKi9cbiAgY2xpY2tfdXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgdXNlciBoYXMgcHJlc3NlZCBhbnkgYWN0aW9uIG9uIHRoZSBJbi1BcHAgTWVzc2FnZS5cbiAgICovXG4gIGZpcnN0X2NsaWNrOiBib29sZWFuO1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgSW4tQXBwIE1lc3NhZ2Ugd2lsbCBhbmltYXRlIG9mZiB0aGUgc2NyZWVuLiBJZiBgZmFsc2VgLCB0aGUgSW4tQXBwIE1lc3NhZ2Ugd2lsbCBzdGF5IG9uIHNjcmVlbiB1bnRpbCB0aGUgdXNlciBkaXNtaXNzZXMgaXQuXG4gICAqL1xuICBjbG9zZXNfbWVzc2FnZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAbmFtZSBPbmVTaWduYWxcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIE9uZVNpZ25hbCBwbHVnaW4gaXMgYW4gY2xpZW50IGltcGxlbWVudGF0aW9uIGZvciB1c2luZyB0aGUgW09uZVNpZ25hbF0oaHR0cHM6Ly9vbmVzaWduYWwuY29tLykgU2VydmljZS5cbiAqIE9uZVNpZ25hbCBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgZGVsaXZlcmluZyBwdXNoIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogUGxlYXNlIHZpZXcgdGhlIG9mZmljaWFsIFtPbmVTaWduYWwgSW9uaWMgU0RLIEluc3RhbGxhdGlvbl0oaHR0cHM6Ly9kb2N1bWVudGF0aW9uLm9uZXNpZ25hbC5jb20vZG9jcy9pb25pYy1zZGstc2V0dXApIGd1aWRlXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAjIyMjIEljb25zXG4gKiBJZiB5b3Ugd2FudCB0byB1c2UgZ2VuZXJhdGVkIGljb25zIHdpdGggY29tbWFuZCBgaW9uaWMgY29yZG92YSByZXNvdXJjZXNgOlxuICpcbiAqIDEuIEFkZCBhIGZpbGUgdG8geW91ciBgaG9va3NgIGRpcmVjdG9yeSBjYWxsZWQgYGNvcHlfYW5kcm9pZF9ub3RpZmljYXRpb25faWNvbnMuanNgXG4gKlxuICogMi4gQ29uZmlndXJlIHRoZSBob29rIGluIHlvdXIgY29uZmlnLnhtbFxuICogYGBgXG4gKiAgICAgPHBsYXRmb3JtIG5hbWU9XCJhbmRyb2lkXCI+XG4gKiAgICAgICAgIDxob29rIHR5cGU9XCJhZnRlcl9wcmVwYXJlXCIgc3JjPVwiaG9va3MvY29weV9hbmRyb2lkX25vdGlmaWNhdGlvbl9pY29ucy5qc1wiIC8+XG4gKiAgICAgPC9wbGF0Zm9ybT5cbiAqIGBgYFxuICpcbiAqIDMuIFB1dCB0aGUgZm9sbG93aW5nIGNvZGUgaW4gaXQ6XG4gKlxuICogYGBgXG4gKiAjIS91c3IvYmluL2VudiBub2RlXG4gKlxuICogdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAqIHZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuICpcbiAqIHZhciBmaWxlc3RvY29weSA9IFt7XG4gKiAgICAgXCJyZXNvdXJjZXMvYW5kcm9pZC9pY29uL2RyYXdhYmxlLWhkcGktaWNvbi5wbmdcIjpcbiAqICAgICAgICAgXCJwbGF0Zm9ybXMvYW5kcm9pZC9hcHAvc3JjL21haW4vcmVzL2RyYXdhYmxlLWhkcGkvaWNfc3RhdF9vbmVzaWduYWxfZGVmYXVsdC5wbmdcIlxuICogfSwge1xuICogICAgIFwicmVzb3VyY2VzL2FuZHJvaWQvaWNvbi9kcmF3YWJsZS1tZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUteGhkcGktaWNvbi5wbmdcIjpcbiAqICAgICAgICAgXCJwbGF0Zm9ybXMvYW5kcm9pZC9hcHAvc3JjL21haW4vcmVzL2RyYXdhYmxlLXhoZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUteHhoZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS14eGhkcGkvaWNfc3RhdF9vbmVzaWduYWxfZGVmYXVsdC5wbmdcIlxuICogfSwge1xuICogICAgIFwicmVzb3VyY2VzL2FuZHJvaWQvaWNvbi9kcmF3YWJsZS14eHhoZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS14eHhoZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0gXTtcbiAqXG4gKiBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAqXG4gKiAgICAgLy8gbm8gbmVlZCB0byBjb25maWd1cmUgYmVsb3dcbiAqICAgICB2YXIgcm9vdGRpciA9IGNvbnRleHQub3B0cy5wcm9qZWN0Um9vdDtcbiAqXG4gKiAgICAgZmlsZXN0b2NvcHkuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcbiAqICAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICogICAgICAgICAgICAgdmFyIHZhbCA9IG9ialtrZXldO1xuICogICAgICAgICAgICAgdmFyIHNyY2ZpbGUgPSBwYXRoLmpvaW4ocm9vdGRpciwga2V5KTtcbiAqICAgICAgICAgICAgIHZhciBkZXN0ZmlsZSA9IHBhdGguam9pbihyb290ZGlyLCB2YWwpO1xuICogICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb3B5aW5nIFwiK3NyY2ZpbGUrXCIgdG8gXCIrZGVzdGZpbGUpO1xuICogICAgICAgICAgICAgdmFyIGRlc3RkaXIgPSBwYXRoLmRpcm5hbWUoZGVzdGZpbGUpO1xuICogICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3JjZmlsZSkgJiYgZnMuZXhpc3RzU3luYyhkZXN0ZGlyKSkge1xuICogICAgICAgICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oc3JjZmlsZSkucGlwZShcbiAqICAgICAgICAgICAgICAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oZGVzdGZpbGUpKTtcbiAqICAgICAgICAgICAgIH1cbiAqICAgICAgICAgfSk7XG4gKiAgICAgfSk7XG4gKlxuICogfTtcbiAqIGBgYFxuICpcbiAqIDMuIEZyb20gdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0IG1ha2UgdGhlIGZpbGUgZXhlY3V0YWJsZTpcbiAqIGAkIGNobW9kICt4IGhvb2tzL2NvcHlfYW5kcm9pZF9ub3RpZmljYXRpb25faWNvbnMuanNgXG4gKlxuICpcbiAqIEB1c2FnZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgT25lU2lnbmFsIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL29uZXNpZ25hbC9uZ3gnO1xuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgb25lU2lnbmFsOiBPbmVTaWduYWwpIHsgfVxuICpcbiAqIC4uLlxuICpcbiAqIHRoaXMub25lU2lnbmFsLnN0YXJ0SW5pdCgnYjJmN2Y5NjYtZDhjYy0xMWU0LWJlZDEtZGY4ZjA1YmU1NWJhJywgJzcwMzMyMjc0NDI2MScpO1xuICpcbiAqIHRoaXMub25lU2lnbmFsLmluRm9jdXNEaXNwbGF5aW5nKHRoaXMub25lU2lnbmFsLk9TSW5Gb2N1c0Rpc3BsYXlPcHRpb24uSW5BcHBBbGVydCk7XG4gKlxuICogdGhpcy5vbmVTaWduYWwuaGFuZGxlTm90aWZpY2F0aW9uUmVjZWl2ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICogIC8vIGRvIHNvbWV0aGluZyB3aGVuIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZFxuICogfSk7XG4gKlxuICogdGhpcy5vbmVTaWduYWwuaGFuZGxlTm90aWZpY2F0aW9uT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAqICAgLy8gZG8gc29tZXRoaW5nIHdoZW4gYSBub3RpZmljYXRpb24gaXMgb3BlbmVkXG4gKiB9KTtcbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5lbmRJbml0KCk7XG4gKiBgYGBcbiAqIEBpbnRlcmZhY2VzXG4gKiBPU05vdGlmaWNhdGlvblxuICogT1NMb2NrU2NyZWVuVmlzaWJpbGl0eVxuICogT1NEaXNwbGF5VHlwZVxuICogT1NOb3RpZmljYXRpb25QYXlsb2FkXG4gKiBPU0FjdGlvbkJ1dHRvblxuICogT1NCYWNrZ3JvdW5kSW1hZ2VMYXlvdXRcbiAqIE9TTm90aWZpY2F0aW9uT3BlbmVkUmVzdWx0XG4gKiBPU0FjdGlvblR5cGVcbiAqIE9TSW5BcHBNZXNzYWdlQWN0aW9uXG4gKi9cbkBQbHVnaW4oe1xuICBwbHVnaW5OYW1lOiAnT25lU2lnbmFsJyxcbiAgcGx1Z2luOiAnb25lc2lnbmFsLWNvcmRvdmEtcGx1Z2luJyxcbiAgcGx1Z2luUmVmOiAncGx1Z2lucy5PbmVTaWduYWwnLFxuICByZXBvOiAnaHR0cHM6Ly9naXRodWIuY29tL09uZVNpZ25hbC9PbmVTaWduYWwtQ29yZG92YS1TREsnLFxuICBwbGF0Zm9ybXM6IFsnQW1hem9uIEZpcmUgT1MnLCAnQW5kcm9pZCcsICdpT1MnLCAnV2luZG93cyddLFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPbmVTaWduYWwgZXh0ZW5kcyBBd2Vzb21lQ29yZG92YU5hdGl2ZVBsdWdpbiB7XG4gIC8qKlxuICAgKiBjb25zdGFudHMgdG8gdXNlIGluIGluRm9jdXNEaXNwbGF5aW5nKClcbiAgICogQGhpZGRlblxuICAgKi9cbiAgT1NJbkZvY3VzRGlzcGxheU9wdGlvbiA9IHtcbiAgICBOb25lOiAwLFxuICAgIEluQXBwQWxlcnQ6IDEsXG4gICAgTm90aWZpY2F0aW9uOiAyLFxuICB9O1xuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gT25jZSB5b3UgYXJlIGRvbmUgY29uZmlndXJpbmcgT25lU2lnbmFsLCBjYWxsIHRoZSBgZW5kSW5pdGAgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBJZCBZb3VyIE9uZVNpZ25hbCBhcHAgaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdvb2dsZVByb2plY3ROdW1iZXIgKipBTkRST0lEKiogLSB5b3VyIEdvb2dsZSBwcm9qZWN0IG51bWJlcjsgb25seSByZXF1aXJlZCBmb3IgQW5kcm9pZCBHQ00vRkNNIHB1c2hlcy5cbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzdGFydEluaXQoYXBwSWQ6IHN0cmluZywgZ29vZ2xlUHJvamVjdE51bWJlcj86IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHJ1biB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIHJlY2VpdmVkLCB3aGV0aGVyIGl0IHdhcyBkaXNwbGF5ZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE9uZVNpZ25hbFJlY2VpdmVkTm90aWZpY2F0aW9uPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBoYW5kbGVOb3RpZmljYXRpb25SZWNlaXZlZCgpOiBPYnNlcnZhYmxlPE9TTm90aWZpY2F0aW9uPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHJ1biB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIHRhcHBlZCBvbiBmcm9tIHRoZSBub3RpZmljYXRpb24gc2hhZGUgKCoqQU5EUk9JRCoqKSBvciBub3RpZmljYXRpb25cbiAgICogY2VudGVyICgqKmlPUyoqKSwgb3Igd2hlbiBjbG9zaW5nIGFuIEFsZXJ0IG5vdGlmaWNhdGlvbiBzaG93biBpbiB0aGUgYXBwIChpZiBJbkFwcEFsZXJ0IGlzIGVuYWJsZWQgaW5cbiAgICogaW5Gb2N1c0Rpc3BsYXlpbmcpLlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE9uZVNpZ25hbE9wZW5lZE5vdGlmaWNhdGlvbj59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgaGFuZGxlTm90aWZpY2F0aW9uT3BlbmVkKCk6IE9ic2VydmFibGU8T1NOb3RpZmljYXRpb25PcGVuZWRSZXN1bHQ+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRvIHByb2Nlc3MgYW4gSW4tQXBwIE1lc3NhZ2UgdGhlIHVzZXIganVzdCB0YXBwZWQgb24uXG4gICAqXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8T1NJbkFwcE1lc3NhZ2VBY3Rpb24+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGhhbmRsZUluQXBwTWVzc2FnZUNsaWNrZWQoKTogT2JzZXJ2YWJsZTxPU0luQXBwTWVzc2FnZUFjdGlvbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiAqKmlPUyoqIC0gU2V0dGluZ3MgZm9yIGlPUyBhcHBzXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5nc1xuICAgKiAga09TU2V0dGluZ3NLZXlBdXRvUHJvbXB0OiBib29sZWFuID0gdHJ1ZVxuICAgKiAgQXV0byBwcm9tcHQgdXNlciBmb3Igbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiAga09TU2V0dGluZ3NLZXlJbkFwcExhdW5jaFVSTDogYm9vbGVhbiA9IGZhbHNlXG4gICAqICBMYXVuY2ggbm90aWZpY2F0aW9ucyB3aXRoIGEgbGF1bmNoIFVSTCBhcyBhbiBpbiBhcHAgd2Vidmlldy5cbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICAgIHBsYXRmb3JtczogWydpT1MnXSxcbiAgfSlcbiAgaU9TU2V0dGluZ3Moc2V0dGluZ3M6IHsga09TU2V0dGluZ3NLZXlBdXRvUHJvbXB0OiBib29sZWFuOyBrT1NTZXR0aW5nc0tleUluQXBwTGF1bmNoVVJMOiBib29sZWFuIH0pOiBhbnkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXN0IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRJbml0YCB0byBjb21wbGV0ZSBpbml0aWFsaXphdGlvbiBvZiBPbmVTaWduYWwuXG4gICAqXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZW5kSW5pdCgpOiBhbnkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9tcHQgdGhlIHVzZXIgZm9yIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9ucy4gQ2FsbGJhY2sgZmlyZXMgYXMgc29vbiBhcyB0aGUgdXNlciBhY2NlcHRzIG9yIGRlY2xpbmVzIG5vdGlmaWNhdGlvbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHBsYXRmb3JtczogWydpT1MnXSxcbiAgfSlcbiAgcHJvbXB0Rm9yUHVzaE5vdGlmaWNhdGlvbnNXaXRoVXNlclJlc3BvbnNlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhIGxpc3Qgb2YgdGFncyB0aGF0IGhhdmUgYmVlbiBzZXQgb24gdGhlIHVzZXIgZnJvbSB0aGUgT25lU2lnbmFsIHNlcnZlci5cbiAgICpcbiAgICogKipRdWlyayoqOiBZb3UgbXVzdCB3YWl0IGZvciBgZ2V0VGFnc2AgdG8gcmVzb2x2ZSBiZWZvcmUgY2FsbGluZyBpdCBhZ2FpbiwgYXMgdGhlIHBsdWdpbiB3aWxsIG9ubHkgcHJvY2VzcyB0aGUgbGFzdCBtZXRob2QgY2FsbCBhbmQgZGlzY2FyZCBhbnkgcHJldmlvdXMgb25lcy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRhZ3MgYXJlIHJlY2lldmVkLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRUYWdzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgeW91IHJldHJpZXZlIHRoZSBPbmVTaWduYWwgdXNlciBpZCBhbmQgZGV2aWNlIHRva2VuLlxuICAgKiBZb3VyIGhhbmRsZXIgaXMgY2FsbGVkIGFmdGVyIHRoZSBkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgd2l0aCBPbmVTaWduYWwuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgaWYgdGhlIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqICB1c2VySWQge3N0cmluZ30gT25lU2lnbmFsIHVzZXJJZCBpcyBhIFVVSUQgZm9ybWF0dGVkIHN0cmluZy4gKHVuaXF1ZSBwZXIgZGV2aWNlIHBlciBhcHApXG4gICAqXG4gICAqICBwdXNoVG9rZW4ge3N0cmluZ30gQSBwdXNoIHRva2VuIGlzIGEgR29vZ2xlL0FwcGxlIGFzc2lnbmVkIGlkZW50aWZpZXIodW5pcXVlIHBlciBkZXZpY2UgcGVyIGFwcCkuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldElkcygpOiBQcm9taXNlPHsgdXNlcklkOiBzdHJpbmc7IHB1c2hUb2tlbjogc3RyaW5nIH0+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGFnIGEgdXNlciBiYXNlZCBvbiBhbiBhcHAgZXZlbnQgb2YgeW91ciBjaG9vc2luZyBzbyBsYXRlciB5b3UgY2FuIGNyZWF0ZSBzZWdtZW50cyBvbiBbb25lc2lnbmFsLmNvbV0oaHR0cHM6Ly9vbmVzaWduYWwuY29tLykgdG8gdGFyZ2V0IHRoZXNlIHVzZXJzLlxuICAgKiBSZWNvbW1lbmQgdXNpbmcgc2VuZFRhZ3Mgb3ZlciBzZW5kVGFnIGlmIHlvdSBuZWVkIHRvIHNldCBtb3JlIHRoYW4gb25lIHRhZyBvbiBhIHVzZXIgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gS2V5IG9mIHlvdXIgY2hvb3NpbmcgdG8gY3JlYXRlIG9yIHVwZGF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFZhbHVlIHRvIHNldCBvbiB0aGUga2V5LiBOT1RFOiBQYXNzaW5nIGluIGEgYmxhbmsgU3RyaW5nIGRlbGV0ZXMgdGhlIGtleSwgeW91IGNhbiBhbHNvIGNhbGwgZGVsZXRlVGFnLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNlbmRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRhZyBhIHVzZXIgYmFzZWQgb24gYW4gYXBwIGV2ZW50IG9mIHlvdXIgY2hvb3Npbmcgc28gbGF0ZXIgeW91IGNhbiBjcmVhdGUgc2VnbWVudHMgb24gW29uZXNpZ25hbC5jb21dKGh0dHBzOi8vb25lc2lnbmFsLmNvbS8pIHRvIHRhcmdldCB0aGVzZSB1c2Vycy5cbiAgICogUmVjb21tZW5kIHVzaW5nIHNlbmRUYWdzIG92ZXIgc2VuZFRhZyBpZiB5b3UgbmVlZCB0byBzZXQgbW9yZSB0aGFuIG9uZSB0YWcgb24gYSB1c2VyIGF0IGEgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFBhc3MgYSBqc29uIG9iamVjdCB3aXRoIGtleS92YWx1ZSBwYWlycyBsaWtlOiB7a2V5OiBcInZhbHVlXCIsIGtleTI6IFwidmFsdWUyXCJ9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2VuZFRhZ3MoanNvbjogYW55KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgdGFnIHRoYXQgd2FzIHByZXZpb3VzbHkgc2V0IG9uIGEgdXNlciB3aXRoIGBzZW5kVGFnYCBvciBgc2VuZFRhZ3NgLiBVc2UgYGRlbGV0ZVRhZ3NgIGlmIHlvdSBuZWVkIHRvIGRlbGV0ZSBtb3JlIHRoYW4gb25lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gS2V5IHRvIHJlbW92ZS5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBkZWxldGVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGFncyB0aGF0IHdlcmUgcHJldmlvdXNseSBzZXQgb24gYSB1c2VyIHdpdGggYHNlbmRUYWdgIG9yIGBzZW5kVGFnc2AuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IEtleXMgdG8gcmVtb3ZlLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGRlbGV0ZVRhZ3Moa2V5czogc3RyaW5nW10pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhpcyB3aGVuIHlvdSB3b3VsZCBsaWtlIHRvIHByb21wdCBhbiBpT1MgdXNlciB0byBhY2NlcHQgcHVzaCBub3RpZmljYXRpb25zIHdpdGggdGhlIGRlZmF1bHQgc3lzdGVtIHByb21wdC5cbiAgICogT25seSB3b3JrcyBpZiB5b3Ugc2V0IGBrT1NTZXR0aW5nc0F1dG9Qcm9tcHRgIHRvIGBmYWxzZWAgaW4gYGlPU1NldHRpbmdzYFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHJlZ2lzdGVyRm9yUHVzaE5vdGlmaWNhdGlvbnMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBXYXJuaW5nOlxuICAgKiBPbmx5IGFwcGxpZXMgdG8gQW5kcm9pZCBhbmQgQW1hem9uLiBZb3UgY2FuIGNhbGwgdGhpcyBmcm9tIHlvdXIgVUkgZnJvbSBhIGJ1dHRvbiBwcmVzcyBmb3IgZXhhbXBsZSB0byBnaXZlIHlvdXIgdXNlcidzIG9wdGlvbnMgZm9yIHlvdXIgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCBPbmVTaWduYWwgYWx3YXlzIHZpYnJhdGVzIHRoZSBkZXZpY2Ugd2hlbiBhIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQgdW5sZXNzIHRoZSBkZXZpY2UgaXMgaW4gYSB0b3RhbCBzaWxlbnQgbW9kZS5cbiAgICogUGFzc2luZyBmYWxzZSBtZWFucyB0aGF0IHRoZSBkZXZpY2Ugd2lsbCBvbmx5IHZpYnJhdGUgbGlnaHRseSB3aGVuIHRoZSBkZXZpY2UgaXMgaW4gaXQncyB2aWJyYXRlIG9ubHkgbW9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBmYWxzZSB0byBkaXNhYmxlIHZpYnJhdGUsIHRydWUgdG8gcmUtZW5hYmxlIGl0LlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVuYWJsZVZpYnJhdGUoZW5hYmxlOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBXYXJuaW5nOlxuICAgKiBPbmx5IGFwcGxpZXMgdG8gQW5kcm9pZCBhbmQgQW1hem9uLiBZb3UgY2FuIGNhbGwgdGhpcyBmcm9tIHlvdXIgVUkgZnJvbSBhIGJ1dHRvbiBwcmVzcyBmb3IgZXhhbXBsZSB0byBnaXZlIHlvdXIgdXNlcidzIG9wdGlvbnMgZm9yIHlvdXIgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCBPbmVTaWduYWwgcGxheXMgdGhlIHN5c3RlbSdzIGRlZmF1bHQgbm90aWZpY2F0aW9uIHNvdW5kIHdoZW4gdGhlIGRldmljZSdzIG5vdGlmaWNhdGlvbiBzeXN0ZW0gdm9sdW1lIGlzIHR1cm5lZCBvbi5cbiAgICogUGFzc2luZyBmYWxzZSBtZWFucyB0aGF0IHRoZSBkZXZpY2Ugd2lsbCBvbmx5IHZpYnJhdGUgdW5sZXNzIHRoZSBkZXZpY2UgaXMgc2V0IHRvIGEgdG90YWwgc2lsZW50IG1vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmFsc2UgdG8gZGlzYWJsZSBzb3VuZCwgdHJ1ZSB0byByZS1lbmFibGUgaXQuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZW5hYmxlU291bmQoZW5hYmxlOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKlxuICAgKiBTZXR0aW5nIHRvIGNvbnRyb2wgaG93IE9uZVNpZ25hbCBub3RpZmljYXRpb25zIHdpbGwgYmUgc2hvd24gd2hlbiBvbmUgaXMgcmVjZWl2ZWQgd2hpbGUgeW91ciBhcHAgaXMgaW4gZm9jdXMuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gaW5BcHBBbGVydCwgd2hpY2ggY2FuIGJlIGhlbHBmdWwgZHVyaW5nIGRldmVsb3BtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0Rpc3BsYXlUeXBlfSBkaXNwbGF5T3B0aW9uXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgaW5Gb2N1c0Rpc3BsYXlpbmcoZGlzcGxheU9wdGlvbjogT1NEaXNwbGF5VHlwZSk6IGFueSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGZhbHNlIHRvIG9wdCB1c2VycyBvdXQgb2YgcmVjZWl2aW5nIGFsbCBub3RpZmljYXRpb25zIHRocm91Z2ggT25lU2lnbmFsLlxuICAgKiBZb3UgY2FuIHBhc3MgdHJ1ZSBsYXRlciB0byBvcHQgdXNlcnMgYmFjayBpbnRvIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0U3Vic2NyaXB0aW9uKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IG5vdGlmaWNhdGlvbiBhbmQgcGVybWlzc2lvbiBzdGF0ZS4gUmV0dXJucyBhIE9TUGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlIHR5cGUgZGVzY3JpYmVkIGJlbG93LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPU1Blcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZT59XG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFBlcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZSgpOiBQcm9taXNlPE9TUGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7bm90aWZpY2F0aW9uT2JqfSBQYXJhbWV0ZXJzIHNlZSBQT1NUIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3VtZW50YXRpb24ub25lc2lnbmFsLmNvbS92Mi4wL2RvY3Mvbm90aWZpY2F0aW9ucy1jcmVhdGUtbm90aWZpY2F0aW9uKVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIGlmIHRoZSBub3RpZmljYXRpb24gd2FzIHNlbmQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBwb3N0Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbk9iajogT1NOb3RpZmljYXRpb24pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGEgc2luZ2xlIE9uZVNpZ25hbCBub3RpZmljYXRpb24gYmFzZWQgb24gaXRzIEFuZHJvaWQgbm90aWZpY2F0aW9uIGludGVnZXIgaWQuIFVzZSBpbnN0ZWFkIG9mIE5vdGlmaWNhdGlvbk1hbmFnZXIuY2FuY2VsKGlkKTsgb3RoZXJ3aXNlIHRoZSBub3RpZmljYXRpb24gd2lsbCBiZSByZXN0b3JlZCB3aGVuIHlvdXIgYXBwIGlzIHJlc3RhcnRlZC5cbiAgICogQHBhcmFtIG5vdGlmaWNhdGlvbklkIHtzdHJpbmd9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgY2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFByb21wdHMgdGhlIHVzZXIgZm9yIGxvY2F0aW9uIHBlcm1pc3Npb24gdG8gYWxsb3cgZ2VvdGFnZ2luZyBiYXNlZCBvbiB0aGUgXCJMb2NhdGlvbiByYWRpdXNcIiBmaWx0ZXIgb24gdGhlIE9uZVNpZ25hbCBkYXNoYm9hcmQuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgcHJvbXB0TG9jYXRpb24oKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZW1haWwge3N0cmluZ31cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzeW5jSGFzaGVkRW1haWwoZW1haWw6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogRW5hYmxlIGxvZ2dpbmcgdG8gaGVscCBkZWJ1ZyBpZiB5b3UgcnVuIGludG8gYW4gaXNzdWUgc2V0dGluZyB1cCBPbmVTaWduYWwuXG4gICAqIFRoZSBsb2dnaW5nIGxldmVscyBhcmUgYXMgZm9sbG93czogMCA9IE5vbmUsIDE9IEZhdGFsLCAyID0gRXJyb3JzLCAzID0gV2FybmluZ3MsIDQgPSBJbmZvLCA1ID0gRGVidWcsIDYgPSBWZXJib3NlXG4gICAqXG4gICAqIFRoZSBoaWdoZXIgdGhlIHZhbHVlIHRoZSBtb3JlIGluZm9ybWF0aW9uIGlzIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0ge2xvZ2xldmVsfSBjb250YWlucyB0d28gcHJvcGVydGllczogbG9nTGV2ZWwgKGZvciBjb25zb2xlIGxvZ2dpbmcpIGFuZCB2aXN1YWxMZXZlbCAoZm9yIGRpYWxvZyBtZXNzYWdlcylcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRMb2dMZXZlbChsb2dMZXZlbDogeyBsb2dMZXZlbDogbnVtYmVyOyB2aXN1YWxMZXZlbDogbnVtYmVyIH0pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgb3IgZW5hYmxlIGxvY2F0aW9uIGNvbGxlY3Rpb24gKERlZmF1bHRzIHRvIGVuYWJsZWQpIGlmIHlvdXIgYXBwIGhhcyBsb2NhdGlvbiBwZXJtaXNzaW9uLlxuICAgKiBAcGFyYW0gc2hhcmVkIHtib29sZWFufVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldExvY2F0aW9uU2hhcmVkKHNoYXJlZDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogVGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aWxsIGJlIGZpcmVkIHdoZW4gYSBub3RpZmljYXRpb24gcGVybWlzc2lvbiBzZXR0aW5nIGNoYW5nZXMuXG4gICAqIFRoaXMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBldmVudHM6XG4gICAqIC0gTm90aWZpY2F0aW9uIHBlcm1pc3Npb24gcHJvbXB0IHNob3duXG4gICAqIC0gVGhlIHVzZXIgYWNjZXB0aW5nIG9yIGRlY2xpbmluZyB0aGUgcGVybWlzc2lvbiBwcm9tcHRcbiAgICogLSBFbmFibGluZy9kaXNhYmxpbmcgbm90aWZpY2F0aW9ucyBmb3IgeW91ciBhcHAgaW4gdGhlIGRldmljZSBTZXR0aW5ncyBhZnRlciByZXR1cm5pbmcgdG8geW91ciBhcHAuXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBhZGRQZXJtaXNzaW9uT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aWxsIGJlIGZpcmVkIHdoZW4gYSBub3RpZmljYXRpb24gc3Vic2NyaXB0aW9uIHByb3BlcnR5IGNoYW5nZXMuXG4gICAqIFRoaXMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBldmVudHM6XG4gICAqIC0gR2V0dGluZyBhIHB1c2ggdG9rZW4gZnJvbSBBcHBsZSAvIEdvb2dsZS5cbiAgICogLSBHZXR0aW5nIGEgcGxheWVyIC8gdXNlciBpZCBmcm9tIE9uZVNpZ25hbFxuICAgKiAtIE9uZVNpZ25hbC5zZXRTdWJzY3JpcHRpb24gaXMgY2FsbGVkXG4gICAqIC0gVXNlciBkaXNhYmxlcyBvciBlbmFibGVzIG5vdGlmaWNhdGlvbnNcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGFkZFN1YnNjcmlwdGlvbk9ic2VydmVyKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgT25lU2lnbmFsIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0RW1haWwoZW1haWw6IHN0cmluZywgZW1haWxBdXRoVG9rZW4/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGxvZ291dCBmdW5jdGlvbmFsaXR5LCB5b3UgY2FuIGNhbGwgbG9nb3V0RW1haWwgdG8gZGlzc29jaWF0ZSB0aGUgZW1haWwgZnJvbSB0aGUgZGV2aWNlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGxvZ291dEVtYWlsKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gd2lsbCBiZSBmaXJlZCB3aGVuIGEgbm90aWZpY2F0aW9uIHN1YnNjcmlwdGlvbiBwcm9wZXJ0eSBjaGFuZ2VzLlxuICAgKiBUaGlzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIEdldHRpbmcgYSBwdXNoIHRva2VuIGZyb20gQXBwbGUgLyBHb29nbGUuXG4gICAqIC0gR2V0dGluZyBhIHBsYXllciAvIHVzZXIgaWQgZnJvbSBPbmVTaWduYWxcbiAgICogLSBPbmVTaWduYWwuc2V0U3Vic2NyaXB0aW9uIGlzIGNhbGxlZFxuICAgKiAtIFVzZXIgZGlzYWJsZXMgb3IgZW5hYmxlcyBub3RpZmljYXRpb25zXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBhZGRFbWFpbFN1YnNjcmlwdGlvbk9ic2VydmVyKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgT25lU2lnbmFsIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBjbGVhck9uZVNpZ25hbE5vdGlmaWNhdGlvbnMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGRlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgU0RLIHVudGlsIHRoZSB1c2VyIHByb3ZpZGVzIHByaXZhY3kgY29uc2VudC5cbiAgICogVGhlIFNESyB3aWxsIG5vdCBiZSBmdWxseSBpbml0aWFsaXplZCB1bnRpbCB0aGUgcHJvdmlkZVVzZXJDb25zZW50KHRydWUpIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVxdWlyZWRcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UmVxdWlyZXNVc2VyUHJpdmFjeUNvbnNlbnQocmVxdWlyZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIElmIHlvdXIgYXBwbGljYXRpb24gaXMgc2V0IHRvIHJlcXVpcmUgdGhlIHVzZXIncyBwcml2YWN5IGNvbnNlbnQsIHlvdSBjYW4gcHJvdmlkZSB0aGlzIGNvbnNlbnQgdXNpbmcgdGhpcyBtZXRob2QuXG4gICAqIFVudGlsIHlvdSBjYWxsIHByb3ZpZGVVc2VyQ29uc2VudCh0cnVlKSwgdGhlIFNESyB3aWxsIG5vdCBmdWxseSBpbml0aWFsaXplIGFuZCB3aWxsIG5vdCBzZW5kIGFueSBkYXRhIHRvIE9uZVNpZ25hbC5cbiAgICogQHBhcmFtIHtib29sZWFufSBncmFudGVkXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHByb3ZpZGVVc2VyQ29uc2VudChncmFudGVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgY2FsbGJhY2ssIHdoaWNoIHJldHVybnMgYSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgaWYgdGhlIHVzZXIgaGFzIGdpdmVuIHByaXZhY3kgY29uc2VudCB5ZXQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHVzZXJQcm92aWRlZFByaXZhY3lDb25zZW50KGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge31cblxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byB1c2UgeW91ciBvd24gc3lzdGVtJ3MgdXNlciBJRCdzIHRvIHNlbmQgcHVzaCBub3RpZmljYXRpb25zIHRvIHlvdXIgdXNlcnMuXG4gICAqIFRvIHRpZSBhIHVzZXIgdG8gYSBnaXZlbiB1c2VyIElELCB5b3UgY2FuIHVzZSB0aGlzIG1ldGhvZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dGVybmFsSWRcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0RXh0ZXJuYWxVc2VySWQoZXh0ZXJuYWxJZDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHdoYXRldmVyIHdhcyBzZXQgYXMgdGhlIGN1cnJlbnQgdXNlcidzIGV4dGVybmFsIHVzZXIgSUQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlbW92ZUV4dGVybmFsVXNlcklkKCk6IHZvaWQge31cblxuICAvKipcbiAgICogQWRkIGEgdHJpZ2dlci4gTWF5IHNob3cgYW4gSW4tQXBwIE1lc3NhZ2UgaWYgaXRzIHRyaWdnZXIgY29uZGl0aW9ucyB3ZXJlIG1ldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgZm9yIHRoZSB0cmlnZ2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IE9iamVjdH0gdmFsdWUgVmFsdWUgZm9yIHRoZSB0cmlnZ2VyLiBTdHJpbmcgb3IgbnVtYmVyIHJlY29tbWVuZGVkLiBPYmplY3QgcGFzc2VkIGluIHdpbGwgYmUgY29udmVydGVkIHRvIGEgc3RyaW5nLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIGFkZFRyaWdnZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBPYmplY3QpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG1hcCBvZiB0cmlnZ2Vycy4gTWF5IHNob3cgYW4gSW4tQXBwIE1lc3NhZ2UgaWYgaXRzIHRyaWdnZXIgY29uZGl0aW9ucyB3ZXJlIG1ldC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0Pn0gdHJpZ2dlcnMgQWxsb3dzIHlvdSB0byBzZXQgbXVsdGlwbGUgdHJpZ2dlciBrZXkvdmFsdWUgcGFpcnMgc2ltdWx0YW5lb3VzbHkuIFBhc3MgYSBqc29uIG9iamVjdCB3aXRoIGtleS92YWx1ZSBwYWlycyBsaWtlOiBge1wia2V5XCI6IFwidmFsdWVcIiwgXCJrZXkyXCI6IFwidmFsdWUyXCJ9YC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBhZGRUcmlnZ2Vycyh0cmlnZ2VyczogT2JqZWN0KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgc2luZ2xlIHRyaWdnZXIgZm9yIHRoZSBnaXZlbiBrZXkuIE1heSBzaG93IGFuIEluLUFwcCBNZXNzYWdlIGlmIGl0cyB0cmlnZ2VyIGNvbmRpdGlvbnMgd2VyZSBtZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGZvciB0cmlnZ2VyIHRvIHJlbW92ZS5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICByZW1vdmVUcmlnZ2VyRm9yS2V5KGtleTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgbGlzdCBvZiB0cmlnZ2VycyBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gKGFycmF5KSBvZiBrZXlzLiBNYXkgc2hvdyBhbiBJbi1BcHAgTWVzc2FnZSBpZiBpdHMgdHJpZ2dlciBjb25kaXRpb25zIHdlcmUgbWV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBrZXlzIFJlbW92ZXMgYSBjb2xsZWN0aW9uIG9mIHRyaWdnZXJzIGZyb20gdGhlaXIga2V5cy4gUGFzcyBhbiBhcnJheSBvZiB0cmlnZ2VyIGtleXMgbGlrZTogYFtcImtleTFcIiwgXCJrZXkyXCIsIFwia2V5M1wiXWAuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgcmVtb3ZlVHJpZ2dlcnNGb3JLZXlzKGtleXM6IHN0cmluZ1tdKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgdHJpZ2dlciB2YWx1ZSBmb3IgYSBwcm92aWRlZCB0cmlnZ2VyIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgZm9yIHRyaWdnZXIgdG8gZ2V0IHZhbHVlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBPYmplY3Q+fSBSZXR1cm4gdmFsdWUgc2V0IHdpdGggYGFkZFRyaWdnZXJgLCBvciBgbnVsbGAvYG5pbGAgKGlPUykgaWYgbmV2ZXIgc2V0IG9yIHJlbW92ZWQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFRyaWdnZXJWYWx1ZUZvcktleShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gdGVtcG9yYXJpbHkgcGF1c2UgYWxsIEluLUFwcCBNZXNzYWdlcy4gWW91IG1heSB3YW50IHRvIGRvIHRoaXMgd2hpbGUgdGhlIHVzZXIgaXMgZW5nYWdlZCBpbiBhbiBhY3Rpdml0eSB0aGF0IHlvdSBkb24ndCB3YW50IGEgbWVzc2FnZSB0byBpbnRlcnJ1cHQgKHN1Y2ggYXMgd2F0Y2hpbmcgYSB2aWRlbykuXG4gICAqIEFuIEluLUFwcCBNZXNzYWdlIHRoYXQgd291bGQgZGlzcGxheSBpZiBub3QgcGF1c2VkIHdpbGwgZGlzcGxheSByaWdodCBhZnRlciByZXN1bWUgaWYgaXRzIGNvbmRpdGlvbnMgdG8gZGlzcGxheSByZW1haW5zIHNhdGlzZmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBwYXVzZSBUbyBwYXVzZSwgc2V0IGB0cnVlYC4gVG8gcmVzdW1lLCBzZXQgYGZhbHNlYC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBwYXVzZUluQXBwTWVzc2FnZXMocGF1c2U6IGJvb2xlYW4pOiB2b2lkIHt9XG59XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvb25lc2lnbmFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLHVDQUErQyxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUEwRmxDOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksc0JBYVg7QUFiRCxXQUFZLHNCQUFzQjtJQUNoQzs7T0FFRztJQUNILHVFQUFVLENBQUE7SUFDVjs7T0FFRztJQUNILHlFQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHdFQUFXLENBQUE7QUFDYixDQUFDLEVBYlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQWFqQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFhWDtBQWJELFdBQVksYUFBYTtJQUN2Qjs7T0FFRztJQUNILGlEQUFRLENBQUE7SUFDUjs7T0FFRztJQUNILDZEQUFjLENBQUE7SUFDZDs7T0FFRztJQUNILGlFQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFiVyxhQUFhLEtBQWIsYUFBYSxRQWF4QjtBQThLRCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLG1EQUFVLENBQUE7SUFDViwyREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2Qjs7SUF1SThCLDZCQUEwQjs7O1FBQ3ZEOzs7O1dBSUc7UUFDSCw0QkFBc0IsR0FBRztZQUN2QixJQUFJLEVBQUUsQ0FBQztZQUNQLFVBQVUsRUFBRSxDQUFDO1lBQ2IsWUFBWSxFQUFFLENBQUM7U0FDaEIsQ0FBQzs7O0lBVUYsNkJBQVMsYUFBQyxLQUFhLEVBQUUsbUJBQTRCO0lBWXJELDhDQUEwQjtJQWMxQiw0Q0FBd0I7SUFZeEIsNkNBQXlCO0lBcUJ6QiwrQkFBVyxhQUFDLFFBQXNGO0lBVWxHLDJCQUFPO0lBWVAsOERBQTBDO0lBWTFDLDJCQUFPO0lBZVAsMEJBQU07SUFjTiwyQkFBTyxhQUFDLEdBQVcsRUFBRSxLQUFhO0lBVWxDLDRCQUFRLGFBQUMsSUFBUztJQVNsQiw2QkFBUyxhQUFDLEdBQVc7SUFTckIsOEJBQVUsYUFBQyxJQUFjO0lBT3pCLGdEQUE0QjtJQWE1QixpQ0FBYSxhQUFDLE1BQWU7SUFhN0IsK0JBQVcsYUFBQyxNQUFlO0lBVTNCLHFDQUFpQixhQUFDLGFBQTRCO0lBVzlDLG1DQUFlLGFBQUMsTUFBZTtJQVEvQixrREFBOEI7SUFXOUIsb0NBQWdCLGFBQUMsZUFBK0I7SUFVaEQsc0NBQWtCLGFBQUMsY0FBc0I7SUFNekMsa0NBQWM7SUFPZCxtQ0FBZSxhQUFDLEtBQWE7SUFjN0IsK0JBQVcsYUFBQyxRQUFtRDtJQVEvRCxxQ0FBaUIsYUFBQyxNQUFlO0lBY2pDLHlDQUFxQjtJQWlCckIsMkNBQXVCO0lBV3ZCLDRCQUFRLGFBQUMsS0FBYSxFQUFFLGNBQXVCO0lBUS9DLCtCQUFXO0lBaUJYLGdEQUE0QjtJQVE1QiwrQ0FBMkI7SUFTM0IsaURBQTZCLGFBQUMsUUFBaUI7SUFTL0Msc0NBQWtCLGFBQUMsT0FBZ0I7SUFRbkMsOENBQTBCLGFBQUMsUUFBa0I7SUFTN0MscUNBQWlCLGFBQUMsVUFBa0I7SUFNcEMsd0NBQW9CO0lBV3BCLDhCQUFVLGFBQUMsR0FBVyxFQUFFLEtBQStCO0lBVXZELCtCQUFXLGFBQUMsUUFBZ0I7SUFVNUIsdUNBQW1CLGFBQUMsR0FBVztJQVUvQix5Q0FBcUIsYUFBQyxJQUFjO0lBU3BDLHlDQUFxQixhQUFDLEdBQVc7SUFhakMsc0NBQWtCLGFBQUMsS0FBYzs7Ozs7O29CQXo0Qm5DO0VBc2IrQiwwQkFBMEI7U0FBNUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmRvdmEsIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luLCBQbHVnaW4gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT1NOb3RpZmljYXRpb24ge1xuICAvKipcbiAgICogV2FzIGFwcCBpbiBmb2N1cy5cbiAgICovXG4gIGlzQXBwSW5Gb2N1cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXYXMgbm90aWZpY2F0aW9uIHNob3duIHRvIHRoZSB1c2VyLiBXaWxsIGJlIGZhbHNlIGZvciBzaWxlbnQgbm90aWZpY2F0aW9ucy5cbiAgICovXG4gIHNob3duPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIEFuZHJvaWQgTm90aWZpY2F0aW9uIGFzc2lnbmVkIHRvIHRoZSBub3RpZmljYXRpb24uIENhbiBiZSB1c2VkIHRvIGNhbmNlbCBvciByZXBsYWNlIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBhbmRyb2lkTm90aWZpY2F0aW9uSWQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXlsb2FkIHJlY2VpdmVkIGZyb20gT25lU2lnbmFsLlxuICAgKi9cbiAgcGF5bG9hZD86IE9TTm90aWZpY2F0aW9uUGF5bG9hZDtcbiAgLyoqXG4gICAqIEhvdyB0aGUgbm90aWZpY2F0aW9uIHdhcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIENhbiBiZSBzZXQgdG8gYE5vdGlmaWNhdGlvbmAsIGBJbkFwcEFsZXJ0YCwgb3IgYE5vbmVgIGlmIGl0IHdhcyBub3QgZGlzcGxheWVkLlxuICAgKi9cbiAgZGlzcGxheVR5cGU/OiBPU0Rpc3BsYXlUeXBlO1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gTm90aWZpY2F0aW9uIGlzIGEgc3VtbWFyeSBub3RpZmljYXRpb24gZm9yIGEgZ3JvdXAgdGhpcyB3aWxsIGNvbnRhaW4gYWxsIG5vdGlmaWNhdGlvbiBwYXlsb2FkcyBpdCB3YXMgY3JlYXRlZCBmcm9tLlxuICAgKi9cbiAgZ3JvdXBlZE5vdGlmaWNhdGlvbnM/OiBPU05vdGlmaWNhdGlvblBheWxvYWRbXTtcbiAgYXBwX2lkPzogc3RyaW5nO1xuICBjb250ZW50cz86IGFueTtcbiAgaGVhZGluZ3M/OiBhbnk7XG4gIGlzSW9zPzogYm9vbGVhbjtcbiAgaXNBbmRyb2lkPzogYm9vbGVhbjtcbiAgaXNXUD86IGJvb2xlYW47XG4gIGlzV1BfV05TPzogYm9vbGVhbjtcbiAgaXNBZG0/OiBib29sZWFuO1xuICBpc0Nocm9tZT86IGJvb2xlYW47XG4gIGlzQ2hyb21lV2ViPzogYm9vbGVhbjtcbiAgaXNTYWZhcmk/OiBib29sZWFuO1xuICBpc0FueVdlYj86IGJvb2xlYW47XG4gIGluY2x1ZGVkX3NlZ21lbnRzPzogc3RyaW5nW107XG4gIGV4Y2x1ZGVkX3NlZ21lbnRzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfcGxheWVyX2lkcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX2lvc190b2tlbnM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9hbmRyb2lkX3JlZ19pZHM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV93cF91cmlzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfd3Bfd25zX3VyaXM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9hbWF6b25fcmVnX2lkcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX2Nocm9tZV9yZWdfaWRzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfY2hyb21lX3dlYl9yZWdfaWRzPzogc3RyaW5nW107XG4gIGFwcF9pZHM/OiBzdHJpbmdbXTtcbiAgdGFncz86IGFueVtdO1xuICBpb3NfYmFkZ2VUeXBlPzogc3RyaW5nO1xuICBpb3NfYmFkZ2VDb3VudD86IG51bWJlcjtcbiAgaW9zX3NvdW5kPzogc3RyaW5nO1xuICBhbmRyb2lkX3NvdW5kPzogc3RyaW5nO1xuICBhZG1fc291bmQ/OiBzdHJpbmc7XG4gIHdwX3NvdW5kPzogc3RyaW5nO1xuICB3cF93bnNfc291bmQ/OiBzdHJpbmc7XG4gIGRhdGE/OiBhbnk7XG4gIGJ1dHRvbnM/OiBhbnk7XG4gIGNvbGxhcHNlX2lkPzogc3RyaW5nO1xuICBzbWFsbF9pY29uPzogc3RyaW5nO1xuICBsYXJnZV9pY29uPzogc3RyaW5nO1xuICBiaWdfcGljdHVyZT86IHN0cmluZztcbiAgYWRtX3NtYWxsX2ljb24/OiBzdHJpbmc7XG4gIGFkbV9sYXJnZV9pY29uPzogc3RyaW5nO1xuICBhZG1fYmlnX3BpY3R1cmU/OiBzdHJpbmc7XG4gIGNocm9tZV9pY29uPzogc3RyaW5nO1xuICBjaHJvbWVfYmlnX3BpY3R1cmU/OiBzdHJpbmc7XG4gIGNocm9tZV93ZWJfaWNvbj86IHN0cmluZztcbiAgZmlyZWZveF9pY29uPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIHNlbmRfYWZ0ZXI/OiBzdHJpbmc7XG4gIGRlbGF5ZWRfb3B0aW9uPzogc3RyaW5nO1xuICBkZWxpdmVyeV90aW1lX29mX2RheT86IHN0cmluZztcbiAgYW5kcm9pZF9sZWRfY29sb3I/OiBzdHJpbmc7XG4gIGFuZHJvaWRfYWNjZW50X2NvbG9yPzogc3RyaW5nO1xuICBhbmRyb2lkX3Zpc2liaWxpdHk/OiBudW1iZXI7XG4gIGNvbnRlbnRfYXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgYW1hem9uX2JhY2tncm91bmRfZGF0YT86IGJvb2xlYW47XG4gIHRlbXBsYXRlX2lkPzogc3RyaW5nO1xuICBhbmRyb2lkX2dyb3VwPzogc3RyaW5nO1xuICBhbmRyb2lkX2dyb3VwX21lc3NhZ2U/OiBhbnk7XG4gIGFkbV9ncm91cD86IHN0cmluZztcbiAgYWRtX2dyb3VwX21lc3NhZ2U/OiBhbnk7XG4gIHR0bD86IG51bWJlcjtcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIGlvc19jYXRlZ29yeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBTkRST0lEKiogLSBQcml2YWN5IHNldHRpbmcgZm9yIGhvdyB0aGUgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBzaG93biBvbiB0aGUgbG9ja3NjcmVlbiBvZiBBbmRyb2lkIDUrIGRldmljZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE9TTG9ja1NjcmVlblZpc2liaWxpdHkge1xuICAvKipcbiAgICogRnVsbHkgdmlzaWJsZSAoZGVmYXVsdClcbiAgICovXG4gIFB1YmxpYyA9IDEsXG4gIC8qKlxuICAgKiBDb250ZW50cyBhcmUgaGlkZGVuXG4gICAqL1xuICBQcml2YXRlID0gMCxcbiAgLyoqXG4gICAqIE5vdCBzaG93blxuICAgKi9cbiAgU2VjcmV0ID0gLTEsXG59XG5cbi8qKlxuICogSG93IHRoZSBub3RpZmljYXRpb24gd2FzIGRpc3BsYXllZCB0byB0aGUgdXNlci4gUGFydCBvZiBPU05vdGlmaWNhdGlvbi4gU2VlIGluRm9jdXNEaXNwbGF5aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIGlzIHVzZWQuXG4gKi9cbmV4cG9ydCBlbnVtIE9TRGlzcGxheVR5cGUge1xuICAvKipcbiAgICogbm90aWZpY2F0aW9uIGlzIHNpbGVudCwgb3IgaW5Gb2N1c0Rpc3BsYXlpbmcgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBOb25lID0gMCxcbiAgLyoqXG4gICAqICgqKkRFRkFVTFQqKikgLSBuYXRpdmUgYWxlcnQgZGlhbG9nIGRpc3BsYXkuXG4gICAqL1xuICBJbkFwcEFsZXJ0ID0gMSxcbiAgLyoqXG4gICAqIG5hdGl2ZSBub3RpZmljYXRpb24gZGlzcGxheS5cbiAgICovXG4gIE5vdGlmaWNhdGlvbiA9IDIsXG59XG5cbi8qKlxuICogQ29udGVudHMgYW5kIHNldHRpbmdzIG9mIHRoZSBub3RpZmljYXRpb24gdGhlIHVzZXIgcmVjZWl2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NOb3RpZmljYXRpb25QYXlsb2FkIHtcbiAgLyoqXG4gICAqIE9uZVNpZ25hbCBub3RpZmljYXRpb24gVVVJRC5cbiAgICovXG4gIG5vdGlmaWNhdGlvbklEOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEJvZHkgb2YgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGJvZHk6IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBhZGRpdGlvbmFsIGRhdGEgdGhhdCB3YXMgc2VudCB3aXRoIHRoZSBub3RpZmljYXRpb24uIFNldCBvbiB0aGUgZGFzaGJvYXJkIHVuZGVyIE9wdGlvbnMgPiBBZGRpdGlvbmFsIERhdGFcbiAgICogb3Igd2l0aCB0aGUgJ2RhdGEnIGZpZWxkIG9uIHRoZSBSRVNUIEFQSS5cbiAgICovXG4gIGFkZGl0aW9uYWxEYXRhPzogYW55O1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gU21hbGwgaWNvbiByZXNvdXJjZSBuYW1lIHNldCBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgc21hbGxJY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gTGFyZ2UgaWNvbiBzZXQgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGxhcmdlSWNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIEJpZyBwaWN0dXJlIGltYWdlIHNldCBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgYmlnUGljdHVyZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIEFjY2VudCBjb2xvciBzaG93biBhcm91bmQgc21hbGwgbm90aWZpY2F0aW9uIGljb24gb24gQW5kcm9pZCA1KyBkZXZpY2VzLiBBUkdCIGZvcm1hdC5cbiAgICovXG4gIHNtYWxsSWNvbkFjY2VudENvbG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIHRvIG9wZW4gd2hlbiBvcGVuaW5nIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBsYXVuY2hVUkw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTb3VuZCByZXNvdXJjZSB0byBwbGF5IHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBzaG93bi5cbiAgICovXG4gIHNvdW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBEZXZpY2VzIHRoYXQgaGF2ZSBhIG5vdGlmaWNhdGlvbiBMRUQgd2lsbCBibGluayBpbiB0aGlzIGNvbG9yLiBBUkdCIGZvcm1hdC5cbiAgICovXG4gIGxlZENvbG9yPzogc3RyaW5nO1xuICBsb2NrU2NyZWVuVmlzaWJpbGl0eT86IE9TTG9ja1NjcmVlblZpc2liaWxpdHk7XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBOb3RpZmljYXRpb25zIHdpdGggdGhpcyBzYW1lIGtleSB3aWxsIGJlIGdyb3VwZWQgdG9nZXRoZXIgYXMgYSBzaW5nbGUgc3VtbWFyeSBub3RpZmljYXRpb24uXG4gICAqL1xuICBncm91cEtleT86IHN0cmluZztcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIFN1bW1hcnkgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIHN1bW1hcnkgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgZ3JvdXBNZXNzYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogTGlzdCBvZiBhY3Rpb24gYnV0dG9ucyBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgYWN0aW9uQnV0dG9uczogT1NBY3Rpb25CdXR0b25bXTtcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIFRoZSBHb29nbGUgcHJvamVjdCBudW1iZXIgdGhlIG5vdGlmaWNhdGlvbiB3YXMgc2VudCB1bmRlci5cbiAgICovXG4gIGZyb21Qcm9qZWN0TnVtYmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gSWYgYSBiYWNrZ3JvdW5kIGltYWdlIHdhcyBzZXQgdGhpcyBvYmplY3Qgd2lsbCBiZSBhdmFpbGFibGUuXG4gICAqL1xuICBiYWNrZ3JvdW5kSW1hZ2VMYXlvdXQ/OiBPU0JhY2tncm91bmRJbWFnZUxheW91dDtcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFjdGlvbiBidXR0b25zIG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICByYXdQYXlsb2FkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGlzdCBvZiBhY3Rpb24gYnV0dG9ucyBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TQWN0aW9uQnV0dG9uIHtcbiAgLyoqXG4gICAqIElkIGFzc2lnbmVkIHRvIHRoZSBidXR0b24uXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogVGV4dCBzaG93IG9uIHRoZSBidXR0b24gdG8gdGhlIHVzZXIuXG4gICAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBJY29uIHNob3duIG9uIHRoZSBidXR0b24uXG4gICAqL1xuICBpY29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT1NQZXJtaXNzaW9uU3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU1Blcm1pc3Npb25TdGF0ZSB7XG4gIC8qKlxuICAgKiBVc2VyIHdhcyBwcm9tcHRlZC5cbiAgICovXG4gIGhhc1Byb21wdGVkOiBib29sZWFuO1xuICAvKipcbiAgICogUGVybWlzc2lvbnMgU3RhdHVzIChpT1MgT25seSlcbiAgICovXG4gIHN0YXR1czogYW55O1xuICAvKipcbiAgICogUGVybWlzc2lvbnMgU3RhdGUgKEFuZHJvaWQgT25seSlcbiAgICovXG4gIHN0YXRlOiBhbnk7XG59XG5cbi8qKlxuICogT1NTdWJzY3JpcHRpb25TdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TU3Vic2NyaXB0aW9uU3RhdGUge1xuICBzdWJzY3JpYmVkOiBib29sZWFuO1xuICB1c2VyU3Vic2NyaXB0aW9uU2V0dGluZzogYW55O1xuICB1c2VySWQ6IGFueTtcbiAgcHVzaFRva2VuOiBhbnk7XG59XG5cbi8qKlxuICogU3Vic2NyaXB0aW9uIGFuZCBwZXJtaXNzaW9ucyBzdGF0dXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU1Blcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZSB7XG4gIC8qKlxuICAgKiBJZCBhc3NpZ25lZCB0byB0aGUgYnV0dG9uLlxuICAgKi9cbiAgcGVybWlzc2lvblN0YXR1czogT1NQZXJtaXNzaW9uU3RhdGU7XG4gIC8qKlxuICAgKiBUZXh0IHNob3cgb24gdGhlIGJ1dHRvbiB0byB0aGUgdXNlci5cbiAgICovXG4gIHN1YnNjcmlwdGlvblN0YXR1czogT1NTdWJzY3JpcHRpb25TdGF0ZTtcbn1cblxuLyoqXG4gKiBBTkRST0lEKiogLSBJZiBhIGJhY2tncm91bmQgaW1hZ2Ugd2FzIHNldCwgdGhpcyBvYmplY3Qgd2lsbCBiZSBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NCYWNrZ3JvdW5kSW1hZ2VMYXlvdXQge1xuICAvKipcbiAgICogSW1hZ2UgVVJMIG9yIG5hbWUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbiAgICovXG4gIGltYWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXh0IGNvbG9yIG9mIHRoZSB0aXRsZSBvbiB0aGUgbm90aWZpY2F0aW9uLiBBUkdCIEZvcm1hdC5cbiAgICovXG4gIHRpdGxlVGV4dENvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXh0IGNvbG9yIG9mIHRoZSBib2R5IG9uIHRoZSBub3RpZmljYXRpb24uIEFSR0IgRm9ybWF0LlxuICAgKi9cbiAgYm9keVRleHRDb2xvcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIGEgbm90aWZpY2F0aW9uIHRoZSB1c2VyIHJlY2VpdmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TTm90aWZpY2F0aW9uT3BlbmVkUmVzdWx0IHtcbiAgYWN0aW9uOiB7XG4gICAgLyoqXG4gICAgICogV2FzIHRoZSBub3RpZmljYXRpb24gb3BlbmVkIG5vcm1hbGx5IChgT3BlbmVkYCkgb3Igd2FzIGEgYnV0dG9uIHByZXNzZWQgb24gdGhlIG5vdGlmaWNhdGlvbiAoYEFjdGlvblRha2VuYCkuXG4gICAgICovXG4gICAgdHlwZTogT1NBY3Rpb25UeXBlO1xuICAgIC8qKlxuICAgICAqIElmIGB0eXBlYCA9PSBgQWN0aW9uVGFrZW5gIHRoZW4gdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGlkIG9mIHRoZSBidXR0b24gcHJlc3NlZC5cbiAgICAgKi9cbiAgICBhY3Rpb25JRD86IHN0cmluZztcbiAgfTtcbiAgbm90aWZpY2F0aW9uOiBPU05vdGlmaWNhdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gT1NBY3Rpb25UeXBlIHtcbiAgT3BlbmVkID0gMCxcbiAgQWN0aW9uVGFrZSA9IDEsXG59XG5cbi8qKlxuICogRGV0YWlscyBhYm91dCB0aGUgSW4tQXBwIE1lc3NhZ2UgYWN0aW9uIGVsZW1lbnQgKGJ1dHRvbiBvciBpbWFnZSkgdGhhdCB3YXMgdGFwcGVkIG9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TSW5BcHBNZXNzYWdlQWN0aW9uIHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGNsaWNrIG5hbWUgZGVmaW5lZCBmb3IgdGhlIGFjdGlvbiBlbGVtZW50LiBudWxsIG9yIG5pbCAoaU9TKSBpZiBub3Qgc2V0LlxuICAgKi9cbiAgY2xpY2tfbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgVVJMIHRoYXQgb3BlbnMgd2hlbiB0aGUgYWN0aW9uIHRha2VzIHBsYWNlLiBudWxsIG9yIG5pbCAoaU9TKSBpZiBub3Qgc2V0LlxuICAgKi9cbiAgY2xpY2tfdXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgdXNlciBoYXMgcHJlc3NlZCBhbnkgYWN0aW9uIG9uIHRoZSBJbi1BcHAgTWVzc2FnZS5cbiAgICovXG4gIGZpcnN0X2NsaWNrOiBib29sZWFuO1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgSW4tQXBwIE1lc3NhZ2Ugd2lsbCBhbmltYXRlIG9mZiB0aGUgc2NyZWVuLiBJZiBgZmFsc2VgLCB0aGUgSW4tQXBwIE1lc3NhZ2Ugd2lsbCBzdGF5IG9uIHNjcmVlbiB1bnRpbCB0aGUgdXNlciBkaXNtaXNzZXMgaXQuXG4gICAqL1xuICBjbG9zZXNfbWVzc2FnZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAbmFtZSBPbmVTaWduYWxcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIE9uZVNpZ25hbCBwbHVnaW4gaXMgYW4gY2xpZW50IGltcGxlbWVudGF0aW9uIGZvciB1c2luZyB0aGUgW09uZVNpZ25hbF0oaHR0cHM6Ly9vbmVzaWduYWwuY29tLykgU2VydmljZS5cbiAqIE9uZVNpZ25hbCBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgZGVsaXZlcmluZyBwdXNoIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogUGxlYXNlIHZpZXcgdGhlIG9mZmljaWFsIFtPbmVTaWduYWwgSW9uaWMgU0RLIEluc3RhbGxhdGlvbl0oaHR0cHM6Ly9kb2N1bWVudGF0aW9uLm9uZXNpZ25hbC5jb20vZG9jcy9pb25pYy1zZGstc2V0dXApIGd1aWRlXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAjIyMjIEljb25zXG4gKiBJZiB5b3Ugd2FudCB0byB1c2UgZ2VuZXJhdGVkIGljb25zIHdpdGggY29tbWFuZCBgaW9uaWMgY29yZG92YSByZXNvdXJjZXNgOlxuICpcbiAqIDEuIEFkZCBhIGZpbGUgdG8geW91ciBgaG9va3NgIGRpcmVjdG9yeSBjYWxsZWQgYGNvcHlfYW5kcm9pZF9ub3RpZmljYXRpb25faWNvbnMuanNgXG4gKlxuICogMi4gQ29uZmlndXJlIHRoZSBob29rIGluIHlvdXIgY29uZmlnLnhtbFxuICogYGBgXG4gKiAgICAgPHBsYXRmb3JtIG5hbWU9XCJhbmRyb2lkXCI+XG4gKiAgICAgICAgIDxob29rIHR5cGU9XCJhZnRlcl9wcmVwYXJlXCIgc3JjPVwiaG9va3MvY29weV9hbmRyb2lkX25vdGlmaWNhdGlvbl9pY29ucy5qc1wiIC8+XG4gKiAgICAgPC9wbGF0Zm9ybT5cbiAqIGBgYFxuICpcbiAqIDMuIFB1dCB0aGUgZm9sbG93aW5nIGNvZGUgaW4gaXQ6XG4gKlxuICogYGBgXG4gKiAjIS91c3IvYmluL2VudiBub2RlXG4gKlxuICogdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAqIHZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuICpcbiAqIHZhciBmaWxlc3RvY29weSA9IFt7XG4gKiAgICAgXCJyZXNvdXJjZXMvYW5kcm9pZC9pY29uL2RyYXdhYmxlLWhkcGktaWNvbi5wbmdcIjpcbiAqICAgICAgICAgXCJwbGF0Zm9ybXMvYW5kcm9pZC9hcHAvc3JjL21haW4vcmVzL2RyYXdhYmxlLWhkcGkvaWNfc3RhdF9vbmVzaWduYWxfZGVmYXVsdC5wbmdcIlxuICogfSwge1xuICogICAgIFwicmVzb3VyY2VzL2FuZHJvaWQvaWNvbi9kcmF3YWJsZS1tZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUteGhkcGktaWNvbi5wbmdcIjpcbiAqICAgICAgICAgXCJwbGF0Zm9ybXMvYW5kcm9pZC9hcHAvc3JjL21haW4vcmVzL2RyYXdhYmxlLXhoZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUteHhoZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS14eGhkcGkvaWNfc3RhdF9vbmVzaWduYWxfZGVmYXVsdC5wbmdcIlxuICogfSwge1xuICogICAgIFwicmVzb3VyY2VzL2FuZHJvaWQvaWNvbi9kcmF3YWJsZS14eHhoZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS14eHhoZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0gXTtcbiAqXG4gKiBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAqXG4gKiAgICAgLy8gbm8gbmVlZCB0byBjb25maWd1cmUgYmVsb3dcbiAqICAgICB2YXIgcm9vdGRpciA9IGNvbnRleHQub3B0cy5wcm9qZWN0Um9vdDtcbiAqXG4gKiAgICAgZmlsZXN0b2NvcHkuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcbiAqICAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICogICAgICAgICAgICAgdmFyIHZhbCA9IG9ialtrZXldO1xuICogICAgICAgICAgICAgdmFyIHNyY2ZpbGUgPSBwYXRoLmpvaW4ocm9vdGRpciwga2V5KTtcbiAqICAgICAgICAgICAgIHZhciBkZXN0ZmlsZSA9IHBhdGguam9pbihyb290ZGlyLCB2YWwpO1xuICogICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb3B5aW5nIFwiK3NyY2ZpbGUrXCIgdG8gXCIrZGVzdGZpbGUpO1xuICogICAgICAgICAgICAgdmFyIGRlc3RkaXIgPSBwYXRoLmRpcm5hbWUoZGVzdGZpbGUpO1xuICogICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3JjZmlsZSkgJiYgZnMuZXhpc3RzU3luYyhkZXN0ZGlyKSkge1xuICogICAgICAgICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oc3JjZmlsZSkucGlwZShcbiAqICAgICAgICAgICAgICAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oZGVzdGZpbGUpKTtcbiAqICAgICAgICAgICAgIH1cbiAqICAgICAgICAgfSk7XG4gKiAgICAgfSk7XG4gKlxuICogfTtcbiAqIGBgYFxuICpcbiAqIDMuIEZyb20gdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0IG1ha2UgdGhlIGZpbGUgZXhlY3V0YWJsZTpcbiAqIGAkIGNobW9kICt4IGhvb2tzL2NvcHlfYW5kcm9pZF9ub3RpZmljYXRpb25faWNvbnMuanNgXG4gKiBAdXNhZ2VcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IE9uZVNpZ25hbCB9IGZyb20gJ0Bhd2Vzb21lLWNvcmRvdmEtcGx1Z2lucy9vbmVzaWduYWwvbmd4JztcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIG9uZVNpZ25hbDogT25lU2lnbmFsKSB7IH1cbiAqXG4gKiAuLi5cbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5zdGFydEluaXQoJ2IyZjdmOTY2LWQ4Y2MtMTFlNC1iZWQxLWRmOGYwNWJlNTViYScsICc3MDMzMjI3NDQyNjEnKTtcbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5pbkZvY3VzRGlzcGxheWluZyh0aGlzLm9uZVNpZ25hbC5PU0luRm9jdXNEaXNwbGF5T3B0aW9uLkluQXBwQWxlcnQpO1xuICpcbiAqIHRoaXMub25lU2lnbmFsLmhhbmRsZU5vdGlmaWNhdGlvblJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAqICAvLyBkbyBzb21ldGhpbmcgd2hlbiBub3RpZmljYXRpb24gaXMgcmVjZWl2ZWRcbiAqIH0pO1xuICpcbiAqIHRoaXMub25lU2lnbmFsLmhhbmRsZU5vdGlmaWNhdGlvbk9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gKiAgIC8vIGRvIHNvbWV0aGluZyB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIG9wZW5lZFxuICogfSk7XG4gKlxuICogdGhpcy5vbmVTaWduYWwuZW5kSW5pdCgpO1xuICogYGBgXG4gKiBAaW50ZXJmYWNlc1xuICogT1NOb3RpZmljYXRpb25cbiAqIE9TTG9ja1NjcmVlblZpc2liaWxpdHlcbiAqIE9TRGlzcGxheVR5cGVcbiAqIE9TTm90aWZpY2F0aW9uUGF5bG9hZFxuICogT1NBY3Rpb25CdXR0b25cbiAqIE9TQmFja2dyb3VuZEltYWdlTGF5b3V0XG4gKiBPU05vdGlmaWNhdGlvbk9wZW5lZFJlc3VsdFxuICogT1NBY3Rpb25UeXBlXG4gKiBPU0luQXBwTWVzc2FnZUFjdGlvblxuICovXG5AUGx1Z2luKHtcbiAgcGx1Z2luTmFtZTogJ09uZVNpZ25hbCcsXG4gIHBsdWdpbjogJ29uZXNpZ25hbC1jb3Jkb3ZhLXBsdWdpbicsXG4gIHBsdWdpblJlZjogJ3BsdWdpbnMuT25lU2lnbmFsJyxcbiAgcmVwbzogJ2h0dHBzOi8vZ2l0aHViLmNvbS9PbmVTaWduYWwvT25lU2lnbmFsLUNvcmRvdmEtU0RLJyxcbiAgcGxhdGZvcm1zOiBbJ0FtYXpvbiBGaXJlIE9TJywgJ0FuZHJvaWQnLCAnaU9TJywgJ1dpbmRvd3MnXSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT25lU2lnbmFsIGV4dGVuZHMgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4ge1xuICAvKipcbiAgICogY29uc3RhbnRzIHRvIHVzZSBpbiBpbkZvY3VzRGlzcGxheWluZygpXG4gICAqXG4gICAqIEBoaWRkZW5cbiAgICovXG4gIE9TSW5Gb2N1c0Rpc3BsYXlPcHRpb24gPSB7XG4gICAgTm9uZTogMCxcbiAgICBJbkFwcEFsZXJ0OiAxLFxuICAgIE5vdGlmaWNhdGlvbjogMixcbiAgfTtcblxuICAvKipcbiAgICogU3RhcnQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIE9uY2UgeW91IGFyZSBkb25lIGNvbmZpZ3VyaW5nIE9uZVNpZ25hbCwgY2FsbCB0aGUgYGVuZEluaXRgIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgWW91ciBPbmVTaWduYWwgYXBwIGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBnb29nbGVQcm9qZWN0TnVtYmVyICoqQU5EUk9JRCoqIC0geW91ciBHb29nbGUgcHJvamVjdCBudW1iZXI7IG9ubHkgcmVxdWlyZWQgZm9yIEFuZHJvaWQgR0NNL0ZDTSBwdXNoZXMuXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc3RhcnRJbml0KGFwcElkOiBzdHJpbmcsIGdvb2dsZVByb2plY3ROdW1iZXI/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBydW4gd2hlbiBhIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZCwgd2hldGhlciBpdCB3YXMgZGlzcGxheWVkIG9yIG5vdC5cbiAgICpcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T25lU2lnbmFsUmVjZWl2ZWROb3RpZmljYXRpb24+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGhhbmRsZU5vdGlmaWNhdGlvblJlY2VpdmVkKCk6IE9ic2VydmFibGU8T1NOb3RpZmljYXRpb24+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYSBub3RpZmljYXRpb24gaXMgdGFwcGVkIG9uIGZyb20gdGhlIG5vdGlmaWNhdGlvbiBzaGFkZSAoKipBTkRST0lEKiopIG9yIG5vdGlmaWNhdGlvblxuICAgKiBjZW50ZXIgKCoqaU9TKiopLCBvciB3aGVuIGNsb3NpbmcgYW4gQWxlcnQgbm90aWZpY2F0aW9uIHNob3duIGluIHRoZSBhcHAgKGlmIEluQXBwQWxlcnQgaXMgZW5hYmxlZCBpblxuICAgKiBpbkZvY3VzRGlzcGxheWluZykuXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9uZVNpZ25hbE9wZW5lZE5vdGlmaWNhdGlvbj59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgaGFuZGxlTm90aWZpY2F0aW9uT3BlbmVkKCk6IE9ic2VydmFibGU8T1NOb3RpZmljYXRpb25PcGVuZWRSZXN1bHQ+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRvIHByb2Nlc3MgYW4gSW4tQXBwIE1lc3NhZ2UgdGhlIHVzZXIganVzdCB0YXBwZWQgb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9TSW5BcHBNZXNzYWdlQWN0aW9uPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBoYW5kbGVJbkFwcE1lc3NhZ2VDbGlja2VkKCk6IE9ic2VydmFibGU8T1NJbkFwcE1lc3NhZ2VBY3Rpb24+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogaU9TKiogLSBTZXR0aW5ncyBmb3IgaU9TIGFwcHNcbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzXG4gICAqICBrT1NTZXR0aW5nc0tleUF1dG9Qcm9tcHQ6IGJvb2xlYW4gPSB0cnVlXG4gICAqICBBdXRvIHByb21wdCB1c2VyIGZvciBub3RpZmljYXRpb24gcGVybWlzc2lvbnMuXG4gICAqXG4gICAqICBrT1NTZXR0aW5nc0tleUluQXBwTGF1bmNoVVJMOiBib29sZWFuID0gZmFsc2VcbiAgICogIExhdW5jaCBub3RpZmljYXRpb25zIHdpdGggYSBsYXVuY2ggVVJMIGFzIGFuIGluIGFwcCB3ZWJ2aWV3LlxuICAgKiBAcGFyYW0gc2V0dGluZ3Mua09TU2V0dGluZ3NLZXlBdXRvUHJvbXB0XG4gICAqIEBwYXJhbSBzZXR0aW5ncy5rT1NTZXR0aW5nc0tleUluQXBwTGF1bmNoVVJMXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgICBwbGF0Zm9ybXM6IFsnaU9TJ10sXG4gIH0pXG4gIGlPU1NldHRpbmdzKHNldHRpbmdzOiB7IGtPU1NldHRpbmdzS2V5QXV0b1Byb21wdDogYm9vbGVhbjsga09TU2V0dGluZ3NLZXlJbkFwcExhdW5jaFVSTDogYm9vbGVhbiB9KTogYW55IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0SW5pdGAgdG8gY29tcGxldGUgaW5pdGlhbGl6YXRpb24gb2YgT25lU2lnbmFsLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVuZEluaXQoKTogYW55IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUHJvbXB0IHRoZSB1c2VyIGZvciBub3RpZmljYXRpb24gcGVybWlzc2lvbnMuIENhbGxiYWNrIGZpcmVzIGFzIHNvb24gYXMgdGhlIHVzZXIgYWNjZXB0cyBvciBkZWNsaW5lcyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBwbGF0Zm9ybXM6IFsnaU9TJ10sXG4gIH0pXG4gIHByb21wdEZvclB1c2hOb3RpZmljYXRpb25zV2l0aFVzZXJSZXNwb25zZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSBsaXN0IG9mIHRhZ3MgdGhhdCBoYXZlIGJlZW4gc2V0IG9uIHRoZSB1c2VyIGZyb20gdGhlIE9uZVNpZ25hbCBzZXJ2ZXIuXG4gICAqXG4gICAqIFF1aXJrKio6IFlvdSBtdXN0IHdhaXQgZm9yIGBnZXRUYWdzYCB0byByZXNvbHZlIGJlZm9yZSBjYWxsaW5nIGl0IGFnYWluLCBhcyB0aGUgcGx1Z2luIHdpbGwgb25seSBwcm9jZXNzIHRoZSBsYXN0IG1ldGhvZCBjYWxsIGFuZCBkaXNjYXJkIGFueSBwcmV2aW91cyBvbmVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGFncyBhcmUgcmVjaWV2ZWQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFRhZ3MoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTGV0cyB5b3UgcmV0cmlldmUgdGhlIE9uZVNpZ25hbCB1c2VyIGlkIGFuZCBkZXZpY2UgdG9rZW4uXG4gICAqIFlvdXIgaGFuZGxlciBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGRldmljZSBpcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCB3aXRoIE9uZVNpZ25hbC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyBpZiB0aGUgZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC5cbiAgICpcbiAgICogIHVzZXJJZCB7c3RyaW5nfSBPbmVTaWduYWwgdXNlcklkIGlzIGEgVVVJRCBmb3JtYXR0ZWQgc3RyaW5nLiAodW5pcXVlIHBlciBkZXZpY2UgcGVyIGFwcClcbiAgICpcbiAgICogIHB1c2hUb2tlbiB7c3RyaW5nfSBBIHB1c2ggdG9rZW4gaXMgYSBHb29nbGUvQXBwbGUgYXNzaWduZWQgaWRlbnRpZmllcih1bmlxdWUgcGVyIGRldmljZSBwZXIgYXBwKS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0SWRzKCk6IFByb21pc2U8eyB1c2VySWQ6IHN0cmluZzsgcHVzaFRva2VuOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWcgYSB1c2VyIGJhc2VkIG9uIGFuIGFwcCBldmVudCBvZiB5b3VyIGNob29zaW5nIHNvIGxhdGVyIHlvdSBjYW4gY3JlYXRlIHNlZ21lbnRzIG9uIFtvbmVzaWduYWwuY29tXShodHRwczovL29uZXNpZ25hbC5jb20vKSB0byB0YXJnZXQgdGhlc2UgdXNlcnMuXG4gICAqIFJlY29tbWVuZCB1c2luZyBzZW5kVGFncyBvdmVyIHNlbmRUYWcgaWYgeW91IG5lZWQgdG8gc2V0IG1vcmUgdGhhbiBvbmUgdGFnIG9uIGEgdXNlciBhdCBhIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBLZXkgb2YgeW91ciBjaG9vc2luZyB0byBjcmVhdGUgb3IgdXBkYXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gVmFsdWUgdG8gc2V0IG9uIHRoZSBrZXkuIE5PVEU6IFBhc3NpbmcgaW4gYSBibGFuayBTdHJpbmcgZGVsZXRlcyB0aGUga2V5LCB5b3UgY2FuIGFsc28gY2FsbCBkZWxldGVUYWcuXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2VuZFRhZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogVGFnIGEgdXNlciBiYXNlZCBvbiBhbiBhcHAgZXZlbnQgb2YgeW91ciBjaG9vc2luZyBzbyBsYXRlciB5b3UgY2FuIGNyZWF0ZSBzZWdtZW50cyBvbiBbb25lc2lnbmFsLmNvbV0oaHR0cHM6Ly9vbmVzaWduYWwuY29tLykgdG8gdGFyZ2V0IHRoZXNlIHVzZXJzLlxuICAgKiBSZWNvbW1lbmQgdXNpbmcgc2VuZFRhZ3Mgb3ZlciBzZW5kVGFnIGlmIHlvdSBuZWVkIHRvIHNldCBtb3JlIHRoYW4gb25lIHRhZyBvbiBhIHVzZXIgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gUGFzcyBhIGpzb24gb2JqZWN0IHdpdGgga2V5L3ZhbHVlIHBhaXJzIGxpa2U6IHtrZXk6IFwidmFsdWVcIiwga2V5MjogXCJ2YWx1ZTJcIn1cbiAgICogQHBhcmFtIGpzb25cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZW5kVGFncyhqc29uOiBhbnkpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB0YWcgdGhhdCB3YXMgcHJldmlvdXNseSBzZXQgb24gYSB1c2VyIHdpdGggYHNlbmRUYWdgIG9yIGBzZW5kVGFnc2AuIFVzZSBgZGVsZXRlVGFnc2AgaWYgeW91IG5lZWQgdG8gZGVsZXRlIG1vcmUgdGhhbiBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBLZXkgdG8gcmVtb3ZlLlxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZGVsZXRlVGFnKGtleTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRhZ3MgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2V0IG9uIGEgdXNlciB3aXRoIGBzZW5kVGFnYCBvciBgc2VuZFRhZ3NgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBLZXlzIHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIGtleXNcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBkZWxldGVUYWdzKGtleXM6IHN0cmluZ1tdKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgd2hlbiB5b3Ugd291bGQgbGlrZSB0byBwcm9tcHQgYW4gaU9TIHVzZXIgdG8gYWNjZXB0IHB1c2ggbm90aWZpY2F0aW9ucyB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBwcm9tcHQuXG4gICAqIE9ubHkgd29ya3MgaWYgeW91IHNldCBga09TU2V0dGluZ3NBdXRvUHJvbXB0YCB0byBgZmFsc2VgIGluIGBpT1NTZXR0aW5nc2BcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZWdpc3RlckZvclB1c2hOb3RpZmljYXRpb25zKCk6IHZvaWQge31cblxuICAvKipcbiAgICogV2FybmluZzpcbiAgICogT25seSBhcHBsaWVzIHRvIEFuZHJvaWQgYW5kIEFtYXpvbi4gWW91IGNhbiBjYWxsIHRoaXMgZnJvbSB5b3VyIFVJIGZyb20gYSBidXR0b24gcHJlc3MgZm9yIGV4YW1wbGUgdG8gZ2l2ZSB5b3VyIHVzZXIncyBvcHRpb25zIGZvciB5b3VyIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgT25lU2lnbmFsIGFsd2F5cyB2aWJyYXRlcyB0aGUgZGV2aWNlIHdoZW4gYSBub3RpZmljYXRpb24gaXMgZGlzcGxheWVkIHVubGVzcyB0aGUgZGV2aWNlIGlzIGluIGEgdG90YWwgc2lsZW50IG1vZGUuXG4gICAqIFBhc3NpbmcgZmFsc2UgbWVhbnMgdGhhdCB0aGUgZGV2aWNlIHdpbGwgb25seSB2aWJyYXRlIGxpZ2h0bHkgd2hlbiB0aGUgZGV2aWNlIGlzIGluIGl0J3MgdmlicmF0ZSBvbmx5IG1vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmFsc2UgdG8gZGlzYWJsZSB2aWJyYXRlLCB0cnVlIHRvIHJlLWVuYWJsZSBpdC5cbiAgICogQHBhcmFtIGVuYWJsZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVuYWJsZVZpYnJhdGUoZW5hYmxlOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBXYXJuaW5nOlxuICAgKiBPbmx5IGFwcGxpZXMgdG8gQW5kcm9pZCBhbmQgQW1hem9uLiBZb3UgY2FuIGNhbGwgdGhpcyBmcm9tIHlvdXIgVUkgZnJvbSBhIGJ1dHRvbiBwcmVzcyBmb3IgZXhhbXBsZSB0byBnaXZlIHlvdXIgdXNlcidzIG9wdGlvbnMgZm9yIHlvdXIgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCBPbmVTaWduYWwgcGxheXMgdGhlIHN5c3RlbSdzIGRlZmF1bHQgbm90aWZpY2F0aW9uIHNvdW5kIHdoZW4gdGhlIGRldmljZSdzIG5vdGlmaWNhdGlvbiBzeXN0ZW0gdm9sdW1lIGlzIHR1cm5lZCBvbi5cbiAgICogUGFzc2luZyBmYWxzZSBtZWFucyB0aGF0IHRoZSBkZXZpY2Ugd2lsbCBvbmx5IHZpYnJhdGUgdW5sZXNzIHRoZSBkZXZpY2UgaXMgc2V0IHRvIGEgdG90YWwgc2lsZW50IG1vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmFsc2UgdG8gZGlzYWJsZSBzb3VuZCwgdHJ1ZSB0byByZS1lbmFibGUgaXQuXG4gICAqIEBwYXJhbSBlbmFibGVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlbmFibGVTb3VuZChlbmFibGU6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqXG4gICAqIFNldHRpbmcgdG8gY29udHJvbCBob3cgT25lU2lnbmFsIG5vdGlmaWNhdGlvbnMgd2lsbCBiZSBzaG93biB3aGVuIG9uZSBpcyByZWNlaXZlZCB3aGlsZSB5b3VyIGFwcCBpcyBpbiBmb2N1cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byBpbkFwcEFsZXJ0LCB3aGljaCBjYW4gYmUgaGVscGZ1bCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7RGlzcGxheVR5cGV9IGRpc3BsYXlPcHRpb25cbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBpbkZvY3VzRGlzcGxheWluZyhkaXNwbGF5T3B0aW9uOiBPU0Rpc3BsYXlUeXBlKTogYW55IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogWW91IGNhbiBjYWxsIHRoaXMgbWV0aG9kIHdpdGggZmFsc2UgdG8gb3B0IHVzZXJzIG91dCBvZiByZWNlaXZpbmcgYWxsIG5vdGlmaWNhdGlvbnMgdGhyb3VnaCBPbmVTaWduYWwuXG4gICAqIFlvdSBjYW4gcGFzcyB0cnVlIGxhdGVyIHRvIG9wdCB1c2VycyBiYWNrIGludG8gbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRTdWJzY3JpcHRpb24oZW5hYmxlOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbm90aWZpY2F0aW9uIGFuZCBwZXJtaXNzaW9uIHN0YXRlLiBSZXR1cm5zIGEgT1NQZXJtaXNzaW9uU3Vic2NyaXB0aW9uU3RhdGUgdHlwZSBkZXNjcmliZWQgYmVsb3cuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9TUGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlPn1cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0UGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlKCk6IFByb21pc2U8T1NQZXJtaXNzaW9uU3Vic2NyaXB0aW9uU3RhdGU+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtub3RpZmljYXRpb25PYmp9IFBhcmFtZXRlcnMgc2VlIFBPU1QgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jdW1lbnRhdGlvbi5vbmVzaWduYWwuY29tL3YyLjAvZG9jcy9ub3RpZmljYXRpb25zLWNyZWF0ZS1ub3RpZmljYXRpb24pXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb25PYmpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyBpZiB0aGUgbm90aWZpY2F0aW9uIHdhcyBzZW5kIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgcG9zdE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25PYmo6IE9TTm90aWZpY2F0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBhIHNpbmdsZSBPbmVTaWduYWwgbm90aWZpY2F0aW9uIGJhc2VkIG9uIGl0cyBBbmRyb2lkIG5vdGlmaWNhdGlvbiBpbnRlZ2VyIGlkLiBVc2UgaW5zdGVhZCBvZiBOb3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChpZCk7IG90aGVyd2lzZSB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYmUgcmVzdG9yZWQgd2hlbiB5b3VyIGFwcCBpcyByZXN0YXJ0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb25JZCB7c3RyaW5nfVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JZDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBQcm9tcHRzIHRoZSB1c2VyIGZvciBsb2NhdGlvbiBwZXJtaXNzaW9uIHRvIGFsbG93IGdlb3RhZ2dpbmcgYmFzZWQgb24gdGhlIFwiTG9jYXRpb24gcmFkaXVzXCIgZmlsdGVyIG9uIHRoZSBPbmVTaWduYWwgZGFzaGJvYXJkLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHByb21wdExvY2F0aW9uKCk6IHZvaWQge31cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVtYWlsIHtzdHJpbmd9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc3luY0hhc2hlZEVtYWlsKGVtYWlsOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBsb2dnaW5nIHRvIGhlbHAgZGVidWcgaWYgeW91IHJ1biBpbnRvIGFuIGlzc3VlIHNldHRpbmcgdXAgT25lU2lnbmFsLlxuICAgKiBUaGUgbG9nZ2luZyBsZXZlbHMgYXJlIGFzIGZvbGxvd3M6IDAgPSBOb25lLCAxPSBGYXRhbCwgMiA9IEVycm9ycywgMyA9IFdhcm5pbmdzLCA0ID0gSW5mbywgNSA9IERlYnVnLCA2ID0gVmVyYm9zZVxuICAgKlxuICAgKiBUaGUgaGlnaGVyIHRoZSB2YWx1ZSB0aGUgbW9yZSBpbmZvcm1hdGlvbiBpcyBzaG93bi5cbiAgICpcbiAgICogQHBhcmFtIHtsb2dsZXZlbH0gY29udGFpbnMgdHdvIHByb3BlcnRpZXM6IGxvZ0xldmVsIChmb3IgY29uc29sZSBsb2dnaW5nKSBhbmQgdmlzdWFsTGV2ZWwgKGZvciBkaWFsb2cgbWVzc2FnZXMpXG4gICAqIEBwYXJhbSBsb2dMZXZlbFxuICAgKiBAcGFyYW0gbG9nTGV2ZWwubG9nTGV2ZWxcbiAgICogQHBhcmFtIGxvZ0xldmVsLnZpc3VhbExldmVsXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0TG9nTGV2ZWwobG9nTGV2ZWw6IHsgbG9nTGV2ZWw6IG51bWJlcjsgdmlzdWFsTGV2ZWw6IG51bWJlciB9KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIG9yIGVuYWJsZSBsb2NhdGlvbiBjb2xsZWN0aW9uIChEZWZhdWx0cyB0byBlbmFibGVkKSBpZiB5b3VyIGFwcCBoYXMgbG9jYXRpb24gcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHNoYXJlZCB7Ym9vbGVhbn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRMb2NhdGlvblNoYXJlZChzaGFyZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gd2lsbCBiZSBmaXJlZCB3aGVuIGEgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gc2V0dGluZyBjaGFuZ2VzLlxuICAgKiBUaGlzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIE5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHByb21wdCBzaG93blxuICAgKiAtIFRoZSB1c2VyIGFjY2VwdGluZyBvciBkZWNsaW5pbmcgdGhlIHBlcm1pc3Npb24gcHJvbXB0XG4gICAqIC0gRW5hYmxpbmcvZGlzYWJsaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHlvdXIgYXBwIGluIHRoZSBkZXZpY2UgU2V0dGluZ3MgYWZ0ZXIgcmV0dXJuaW5nIHRvIHlvdXIgYXBwLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGFkZFBlcm1pc3Npb25PYnNlcnZlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGFzc2VkIGluIGZ1bmN0aW9uIHdpbGwgYmUgZmlyZWQgd2hlbiBhIG5vdGlmaWNhdGlvbiBzdWJzY3JpcHRpb24gcHJvcGVydHkgY2hhbmdlcy5cbiAgICogVGhpcyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGV2ZW50czpcbiAgICogLSBHZXR0aW5nIGEgcHVzaCB0b2tlbiBmcm9tIEFwcGxlIC8gR29vZ2xlLlxuICAgKiAtIEdldHRpbmcgYSBwbGF5ZXIgLyB1c2VyIGlkIGZyb20gT25lU2lnbmFsXG4gICAqIC0gT25lU2lnbmFsLnNldFN1YnNjcmlwdGlvbiBpcyBjYWxsZWRcbiAgICogLSBVc2VyIGRpc2FibGVzIG9yIGVuYWJsZXMgbm90aWZpY2F0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGFkZFN1YnNjcmlwdGlvbk9ic2VydmVyKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgT25lU2lnbmFsIG5vdGlmaWNhdGlvbnNcbiAgICpcbiAgICogQHBhcmFtIGVtYWlsXG4gICAqIEBwYXJhbSBlbWFpbEF1dGhUb2tlblxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRFbWFpbChlbWFpbDogc3RyaW5nLCBlbWFpbEF1dGhUb2tlbj86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHlvdXIgYXBwIGltcGxlbWVudHMgbG9nb3V0IGZ1bmN0aW9uYWxpdHksIHlvdSBjYW4gY2FsbCBsb2dvdXRFbWFpbCB0byBkaXNzb2NpYXRlIHRoZSBlbWFpbCBmcm9tIHRoZSBkZXZpY2VcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgbG9nb3V0RW1haWwoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aWxsIGJlIGZpcmVkIHdoZW4gYSBub3RpZmljYXRpb24gc3Vic2NyaXB0aW9uIHByb3BlcnR5IGNoYW5nZXMuXG4gICAqIFRoaXMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBldmVudHM6XG4gICAqIC0gR2V0dGluZyBhIHB1c2ggdG9rZW4gZnJvbSBBcHBsZSAvIEdvb2dsZS5cbiAgICogLSBHZXR0aW5nIGEgcGxheWVyIC8gdXNlciBpZCBmcm9tIE9uZVNpZ25hbFxuICAgKiAtIE9uZVNpZ25hbC5zZXRTdWJzY3JpcHRpb24gaXMgY2FsbGVkXG4gICAqIC0gVXNlciBkaXNhYmxlcyBvciBlbmFibGVzIG5vdGlmaWNhdGlvbnNcbiAgICpcbiAgICogQHJldHVybnMge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBhZGRFbWFpbFN1YnNjcmlwdGlvbk9ic2VydmVyKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgT25lU2lnbmFsIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBjbGVhck9uZVNpZ25hbE5vdGlmaWNhdGlvbnMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGRlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgU0RLIHVudGlsIHRoZSB1c2VyIHByb3ZpZGVzIHByaXZhY3kgY29uc2VudC5cbiAgICogVGhlIFNESyB3aWxsIG5vdCBiZSBmdWxseSBpbml0aWFsaXplZCB1bnRpbCB0aGUgcHJvdmlkZVVzZXJDb25zZW50KHRydWUpIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVxdWlyZWRcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UmVxdWlyZXNVc2VyUHJpdmFjeUNvbnNlbnQocmVxdWlyZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIElmIHlvdXIgYXBwbGljYXRpb24gaXMgc2V0IHRvIHJlcXVpcmUgdGhlIHVzZXIncyBwcml2YWN5IGNvbnNlbnQsIHlvdSBjYW4gcHJvdmlkZSB0aGlzIGNvbnNlbnQgdXNpbmcgdGhpcyBtZXRob2QuXG4gICAqIFVudGlsIHlvdSBjYWxsIHByb3ZpZGVVc2VyQ29uc2VudCh0cnVlKSwgdGhlIFNESyB3aWxsIG5vdCBmdWxseSBpbml0aWFsaXplIGFuZCB3aWxsIG5vdCBzZW5kIGFueSBkYXRhIHRvIE9uZVNpZ25hbC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBncmFudGVkXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHByb3ZpZGVVc2VyQ29uc2VudChncmFudGVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgY2FsbGJhY2ssIHdoaWNoIHJldHVybnMgYSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgaWYgdGhlIHVzZXIgaGFzIGdpdmVuIHByaXZhY3kgY29uc2VudCB5ZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHVzZXJQcm92aWRlZFByaXZhY3lDb25zZW50KGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge31cblxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byB1c2UgeW91ciBvd24gc3lzdGVtJ3MgdXNlciBJRCdzIHRvIHNlbmQgcHVzaCBub3RpZmljYXRpb25zIHRvIHlvdXIgdXNlcnMuXG4gICAqIFRvIHRpZSBhIHVzZXIgdG8gYSBnaXZlbiB1c2VyIElELCB5b3UgY2FuIHVzZSB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dGVybmFsSWRcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0RXh0ZXJuYWxVc2VySWQoZXh0ZXJuYWxJZDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHdoYXRldmVyIHdhcyBzZXQgYXMgdGhlIGN1cnJlbnQgdXNlcidzIGV4dGVybmFsIHVzZXIgSUQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlbW92ZUV4dGVybmFsVXNlcklkKCk6IHZvaWQge31cblxuICAvKipcbiAgICogQWRkIGEgdHJpZ2dlci4gTWF5IHNob3cgYW4gSW4tQXBwIE1lc3NhZ2UgaWYgaXRzIHRyaWdnZXIgY29uZGl0aW9ucyB3ZXJlIG1ldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgZm9yIHRoZSB0cmlnZ2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IE9iamVjdH0gdmFsdWUgVmFsdWUgZm9yIHRoZSB0cmlnZ2VyLiBTdHJpbmcgb3IgbnVtYmVyIHJlY29tbWVuZGVkLiBPYmplY3QgcGFzc2VkIGluIHdpbGwgYmUgY29udmVydGVkIHRvIGEgc3RyaW5nLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIGFkZFRyaWdnZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBPYmplY3QpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG1hcCBvZiB0cmlnZ2Vycy4gTWF5IHNob3cgYW4gSW4tQXBwIE1lc3NhZ2UgaWYgaXRzIHRyaWdnZXIgY29uZGl0aW9ucyB3ZXJlIG1ldC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0Pn0gdHJpZ2dlcnMgQWxsb3dzIHlvdSB0byBzZXQgbXVsdGlwbGUgdHJpZ2dlciBrZXkvdmFsdWUgcGFpcnMgc2ltdWx0YW5lb3VzbHkuIFBhc3MgYSBqc29uIG9iamVjdCB3aXRoIGtleS92YWx1ZSBwYWlycyBsaWtlOiBge1wia2V5XCI6IFwidmFsdWVcIiwgXCJrZXkyXCI6IFwidmFsdWUyXCJ9YC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBhZGRUcmlnZ2Vycyh0cmlnZ2VyczogT2JqZWN0KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgc2luZ2xlIHRyaWdnZXIgZm9yIHRoZSBnaXZlbiBrZXkuIE1heSBzaG93IGFuIEluLUFwcCBNZXNzYWdlIGlmIGl0cyB0cmlnZ2VyIGNvbmRpdGlvbnMgd2VyZSBtZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGZvciB0cmlnZ2VyIHRvIHJlbW92ZS5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICByZW1vdmVUcmlnZ2VyRm9yS2V5KGtleTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgbGlzdCBvZiB0cmlnZ2VycyBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gKGFycmF5KSBvZiBrZXlzLiBNYXkgc2hvdyBhbiBJbi1BcHAgTWVzc2FnZSBpZiBpdHMgdHJpZ2dlciBjb25kaXRpb25zIHdlcmUgbWV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBrZXlzIFJlbW92ZXMgYSBjb2xsZWN0aW9uIG9mIHRyaWdnZXJzIGZyb20gdGhlaXIga2V5cy4gUGFzcyBhbiBhcnJheSBvZiB0cmlnZ2VyIGtleXMgbGlrZTogYFtcImtleTFcIiwgXCJrZXkyXCIsIFwia2V5M1wiXWAuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgcmVtb3ZlVHJpZ2dlcnNGb3JLZXlzKGtleXM6IHN0cmluZ1tdKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgdHJpZ2dlciB2YWx1ZSBmb3IgYSBwcm92aWRlZCB0cmlnZ2VyIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgZm9yIHRyaWdnZXIgdG8gZ2V0IHZhbHVlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBPYmplY3Q+fSBSZXR1cm4gdmFsdWUgc2V0IHdpdGggYGFkZFRyaWdnZXJgLCBvciBgbnVsbGAvYG5pbGAgKGlPUykgaWYgbmV2ZXIgc2V0IG9yIHJlbW92ZWQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFRyaWdnZXJWYWx1ZUZvcktleShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gdGVtcG9yYXJpbHkgcGF1c2UgYWxsIEluLUFwcCBNZXNzYWdlcy4gWW91IG1heSB3YW50IHRvIGRvIHRoaXMgd2hpbGUgdGhlIHVzZXIgaXMgZW5nYWdlZCBpbiBhbiBhY3Rpdml0eSB0aGF0IHlvdSBkb24ndCB3YW50IGEgbWVzc2FnZSB0byBpbnRlcnJ1cHQgKHN1Y2ggYXMgd2F0Y2hpbmcgYSB2aWRlbykuXG4gICAqIEFuIEluLUFwcCBNZXNzYWdlIHRoYXQgd291bGQgZGlzcGxheSBpZiBub3QgcGF1c2VkIHdpbGwgZGlzcGxheSByaWdodCBhZnRlciByZXN1bWUgaWYgaXRzIGNvbmRpdGlvbnMgdG8gZGlzcGxheSByZW1haW5zIHNhdGlzZmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBwYXVzZSBUbyBwYXVzZSwgc2V0IGB0cnVlYC4gVG8gcmVzdW1lLCBzZXQgYGZhbHNlYC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBwYXVzZUluQXBwTWVzc2FnZXMocGF1c2U6IGJvb2xlYW4pOiB2b2lkIHt9XG59XG4iXX0=
package/ngx/bundle.js CHANGED
@@ -8,7 +8,7 @@ var core = require('@awesome-cordova-plugins/core');
8
8
  require('rxjs');
9
9
 
10
10
  /**
11
- * **ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
11
+ * ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
12
12
  */
13
13
  exports.OSLockScreenVisibility = void 0;
14
14
  (function (OSLockScreenVisibility) {
@@ -54,6 +54,7 @@ var OneSignal = /** @class */ (function (_super) {
54
54
  var _this = _super !== null && _super.apply(this, arguments) || this;
55
55
  /**
56
56
  * constants to use in inFocusDisplaying()
57
+ *
57
58
  * @hidden
58
59
  */
59
60
  _this.OSInFocusDisplayOption = {
package/ngx/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export interface OSNotification {
10
10
  */
11
11
  shown?: boolean;
12
12
  /**
13
- * **ANDROID** - Android Notification assigned to the notification. Can be used to cancel or replace the notification.
13
+ * ANDROID** - Android Notification assigned to the notification. Can be used to cancel or replace the notification.
14
14
  */
15
15
  androidNotificationId?: number;
16
16
  /**
@@ -22,7 +22,7 @@ export interface OSNotification {
22
22
  */
23
23
  displayType?: OSDisplayType;
24
24
  /**
25
- * **ANDROID** - Notification is a summary notification for a group this will contain all notification payloads it was created from.
25
+ * ANDROID** - Notification is a summary notification for a group this will contain all notification payloads it was created from.
26
26
  */
27
27
  groupedNotifications?: OSNotificationPayload[];
28
28
  app_id?: string;
@@ -88,7 +88,7 @@ export interface OSNotification {
88
88
  ios_category?: string;
89
89
  }
90
90
  /**
91
- * **ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
91
+ * ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
92
92
  */
93
93
  export declare enum OSLockScreenVisibility {
94
94
  /**
@@ -143,19 +143,19 @@ export interface OSNotificationPayload {
143
143
  */
144
144
  additionalData?: any;
145
145
  /**
146
- * **ANDROID** - Small icon resource name set on the notification.
146
+ * ANDROID** - Small icon resource name set on the notification.
147
147
  */
148
148
  smallIcon?: string;
149
149
  /**
150
- * **ANDROID** - Large icon set on the notification.
150
+ * ANDROID** - Large icon set on the notification.
151
151
  */
152
152
  largeIcon?: string;
153
153
  /**
154
- * **ANDROID** - Big picture image set on the notification.
154
+ * ANDROID** - Big picture image set on the notification.
155
155
  */
156
156
  bigPicture?: string;
157
157
  /**
158
- * **ANDROID** - Accent color shown around small notification icon on Android 5+ devices. ARGB format.
158
+ * ANDROID** - Accent color shown around small notification icon on Android 5+ devices. ARGB format.
159
159
  */
160
160
  smallIconAccentColor?: string;
161
161
  /**
@@ -167,16 +167,16 @@ export interface OSNotificationPayload {
167
167
  */
168
168
  sound: string;
169
169
  /**
170
- * **ANDROID** - Devices that have a notification LED will blink in this color. ARGB format.
170
+ * ANDROID** - Devices that have a notification LED will blink in this color. ARGB format.
171
171
  */
172
172
  ledColor?: string;
173
173
  lockScreenVisibility?: OSLockScreenVisibility;
174
174
  /**
175
- * **ANDROID** - Notifications with this same key will be grouped together as a single summary notification.
175
+ * ANDROID** - Notifications with this same key will be grouped together as a single summary notification.
176
176
  */
177
177
  groupKey?: string;
178
178
  /**
179
- * **ANDROID** - Summary text displayed in the summary notification.
179
+ * ANDROID** - Summary text displayed in the summary notification.
180
180
  */
181
181
  groupMessage?: string;
182
182
  /**
@@ -184,11 +184,11 @@ export interface OSNotificationPayload {
184
184
  */
185
185
  actionButtons: OSActionButton[];
186
186
  /**
187
- * **ANDROID** - The Google project number the notification was sent under.
187
+ * ANDROID** - The Google project number the notification was sent under.
188
188
  */
189
189
  fromProjectNumber?: string;
190
190
  /**
191
- * **ANDROID** - If a background image was set this object will be available.
191
+ * ANDROID** - If a background image was set this object will be available.
192
192
  */
193
193
  backgroundImageLayout?: OSBackgroundImageLayout;
194
194
  priority?: number;
@@ -210,7 +210,7 @@ export interface OSActionButton {
210
210
  */
211
211
  text: string;
212
212
  /**
213
- * **ANDROID** - Icon shown on the button.
213
+ * ANDROID** - Icon shown on the button.
214
214
  */
215
215
  icon: string;
216
216
  }
@@ -254,7 +254,7 @@ export interface OSPermissionSubscriptionState {
254
254
  subscriptionStatus: OSSubscriptionState;
255
255
  }
256
256
  /**
257
- * **ANDROID** - If a background image was set, this object will be available.
257
+ * ANDROID** - If a background image was set, this object will be available.
258
258
  */
259
259
  export interface OSBackgroundImageLayout {
260
260
  /**
@@ -381,8 +381,6 @@ export interface OSInAppMessageAction {
381
381
  *
382
382
  * 3. From the root of your project make the file executable:
383
383
  * `$ chmod +x hooks/copy_android_notification_icons.js`
384
- *
385
- *
386
384
  * @usage
387
385
  * ```typescript
388
386
  * import { OneSignal } from '@awesome-cordova-plugins/onesignal/ngx';
@@ -419,6 +417,7 @@ export interface OSInAppMessageAction {
419
417
  export declare class OneSignal extends AwesomeCordovaNativePlugin {
420
418
  /**
421
419
  * constants to use in inFocusDisplaying()
420
+ *
422
421
  * @hidden
423
422
  */
424
423
  OSInFocusDisplayOption: {
@@ -437,7 +436,7 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
437
436
  /**
438
437
  * Callback to run when a notification is received, whether it was displayed or not.
439
438
  *
440
- * @return {Observable<OneSignalReceivedNotification>}
439
+ * @returns {Observable<OneSignalReceivedNotification>}
441
440
  */
442
441
  handleNotificationReceived(): Observable<OSNotification>;
443
442
  /**
@@ -445,17 +444,17 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
445
444
  * center (**iOS**), or when closing an Alert notification shown in the app (if InAppAlert is enabled in
446
445
  * inFocusDisplaying).
447
446
  *
448
- * @return {Observable<OneSignalOpenedNotification>}
447
+ * @returns {Observable<OneSignalOpenedNotification>}
449
448
  */
450
449
  handleNotificationOpened(): Observable<OSNotificationOpenedResult>;
451
450
  /**
452
451
  * Use to process an In-App Message the user just tapped on.
453
452
  *
454
- * @return {Observable<OSInAppMessageAction>}
453
+ * @returns {Observable<OSInAppMessageAction>}
455
454
  */
456
455
  handleInAppMessageClicked(): Observable<OSInAppMessageAction>;
457
456
  /**
458
- * **iOS** - Settings for iOS apps
457
+ * iOS** - Settings for iOS apps
459
458
  *
460
459
  * @param settings
461
460
  * kOSSettingsKeyAutoPrompt: boolean = true
@@ -463,6 +462,8 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
463
462
  *
464
463
  * kOSSettingsKeyInAppLaunchURL: boolean = false
465
464
  * Launch notifications with a launch URL as an in app webview.
465
+ * @param settings.kOSSettingsKeyAutoPrompt
466
+ * @param settings.kOSSettingsKeyInAppLaunchURL
466
467
  * @returns {any}
467
468
  */
468
469
  iOSSettings(settings: {
@@ -477,13 +478,14 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
477
478
  endInit(): any;
478
479
  /**
479
480
  * Prompt the user for notification permissions. Callback fires as soon as the user accepts or declines notifications.
481
+ *
480
482
  * @returns {Promise<boolean>}
481
483
  */
482
484
  promptForPushNotificationsWithUserResponse(): Promise<boolean>;
483
485
  /**
484
486
  * Retrieve a list of tags that have been set on the user from the OneSignal server.
485
487
  *
486
- * **Quirk**: You must wait for `getTags` to resolve before calling it again, as the plugin will only process the last method call and discard any previous ones.
488
+ * Quirk**: You must wait for `getTags` to resolve before calling it again, as the plugin will only process the last method call and discard any previous ones.
487
489
  *
488
490
  * @returns {Promise<any>} Returns a Promise that resolves when tags are recieved.
489
491
  */
@@ -508,6 +510,8 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
508
510
  *
509
511
  * @param {string} Key of your choosing to create or update.
510
512
  * @param {string} Value to set on the key. NOTE: Passing in a blank String deletes the key, you can also call deleteTag.
513
+ * @param key
514
+ * @param value
511
515
  */
512
516
  sendTag(key: string, value: string): void;
513
517
  /**
@@ -515,18 +519,21 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
515
519
  * Recommend using sendTags over sendTag if you need to set more than one tag on a user at a time.
516
520
  *
517
521
  * @param {string} Pass a json object with key/value pairs like: {key: "value", key2: "value2"}
522
+ * @param json
518
523
  */
519
524
  sendTags(json: any): void;
520
525
  /**
521
526
  * Deletes a tag that was previously set on a user with `sendTag` or `sendTags`. Use `deleteTags` if you need to delete more than one.
522
527
  *
523
528
  * @param {string} Key to remove.
529
+ * @param key
524
530
  */
525
531
  deleteTag(key: string): void;
526
532
  /**
527
533
  * Deletes tags that were previously set on a user with `sendTag` or `sendTags`.
528
534
  *
529
535
  * @param {string[]} Keys to remove.
536
+ * @param keys
530
537
  */
531
538
  deleteTags(keys: string[]): void;
532
539
  /**
@@ -542,6 +549,7 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
542
549
  * Passing false means that the device will only vibrate lightly when the device is in it's vibrate only mode.
543
550
  *
544
551
  * @param {boolean} false to disable vibrate, true to re-enable it.
552
+ * @param enable
545
553
  */
546
554
  enableVibrate(enable: boolean): void;
547
555
  /**
@@ -552,6 +560,7 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
552
560
  * Passing false means that the device will only vibrate unless the device is set to a total silent mode.
553
561
  *
554
562
  * @param {boolean} false to disable sound, true to re-enable it.
563
+ * @param enable
555
564
  */
556
565
  enableSound(enable: boolean): void;
557
566
  /**
@@ -578,11 +587,13 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
578
587
  /**
579
588
  *
580
589
  * @param {notificationObj} Parameters see POST [documentation](https://documentation.onesignal.com/v2.0/docs/notifications-create-notification)
590
+ * @param notificationObj
581
591
  * @returns {Promise<any>} Returns a Promise that resolves if the notification was send successfully.
582
592
  */
583
593
  postNotification(notificationObj: OSNotification): Promise<any>;
584
594
  /**
585
595
  * Cancels a single OneSignal notification based on its Android notification integer id. Use instead of NotificationManager.cancel(id); otherwise the notification will be restored when your app is restarted.
596
+ *
586
597
  * @param notificationId {string}
587
598
  */
588
599
  cancelNotification(notificationId: string): void;
@@ -602,6 +613,9 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
602
613
  * The higher the value the more information is shown.
603
614
  *
604
615
  * @param {loglevel} contains two properties: logLevel (for console logging) and visualLevel (for dialog messages)
616
+ * @param logLevel
617
+ * @param logLevel.logLevel
618
+ * @param logLevel.visualLevel
605
619
  */
606
620
  setLogLevel(logLevel: {
607
621
  logLevel: number;
@@ -609,6 +623,7 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
609
623
  }): void;
610
624
  /**
611
625
  * Disable or enable location collection (Defaults to enabled) if your app has location permission.
626
+ *
612
627
  * @param shared {boolean}
613
628
  */
614
629
  setLocationShared(shared: boolean): void;
@@ -618,7 +633,8 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
618
633
  * - Notification permission prompt shown
619
634
  * - The user accepting or declining the permission prompt
620
635
  * - Enabling/disabling notifications for your app in the device Settings after returning to your app.
621
- * @return {Observable<any>}
636
+ *
637
+ * @returns {Observable<any>}
622
638
  */
623
639
  addPermissionObserver(): Observable<any>;
624
640
  /**
@@ -628,11 +644,15 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
628
644
  * - Getting a player / user id from OneSignal
629
645
  * - OneSignal.setSubscription is called
630
646
  * - User disables or enables notifications
631
- * @return {Observable<any>}
647
+ *
648
+ * @returns {Observable<any>}
632
649
  */
633
650
  addSubscriptionObserver(): Observable<any>;
634
651
  /**
635
652
  * Clears all OneSignal notifications
653
+ *
654
+ * @param email
655
+ * @param emailAuthToken
636
656
  */
637
657
  setEmail(email: string, emailAuthToken?: string): Promise<any>;
638
658
  /**
@@ -646,7 +666,8 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
646
666
  * - Getting a player / user id from OneSignal
647
667
  * - OneSignal.setSubscription is called
648
668
  * - User disables or enables notifications
649
- * @return {Observable<any>}
669
+ *
670
+ * @returns {Observable<any>}
650
671
  */
651
672
  addEmailSubscriptionObserver(): Observable<any>;
652
673
  /**
@@ -656,23 +677,27 @@ export declare class OneSignal extends AwesomeCordovaNativePlugin {
656
677
  /**
657
678
  * Allows you to delay the initialization of the SDK until the user provides privacy consent.
658
679
  * The SDK will not be fully initialized until the provideUserConsent(true) method is called.
680
+ *
659
681
  * @param {boolean} required
660
682
  */
661
683
  setRequiresUserPrivacyConsent(required: boolean): void;
662
684
  /**
663
685
  * If your application is set to require the user's privacy consent, you can provide this consent using this method.
664
686
  * Until you call provideUserConsent(true), the SDK will not fully initialize and will not send any data to OneSignal.
687
+ *
665
688
  * @param {boolean} granted
666
689
  */
667
690
  provideUserConsent(granted: boolean): void;
668
691
  /**
669
692
  * Accepts a callback, which returns a boolean variable indicating if the user has given privacy consent yet.
693
+ *
670
694
  * @param {Function} callback
671
695
  */
672
696
  userProvidedPrivacyConsent(callback: Function): void;
673
697
  /**
674
698
  * Allows you to use your own system's user ID's to send push notifications to your users.
675
699
  * To tie a user to a given user ID, you can use this method.
700
+ *
676
701
  * @param {string} externalId
677
702
  */
678
703
  setExternalUserId(externalId: string): void;
package/ngx/index.js CHANGED
@@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
3
3
  import { AwesomeCordovaNativePlugin, cordova } from '@awesome-cordova-plugins/core';
4
4
  import { Observable } from 'rxjs';
5
5
  /**
6
- * **ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
6
+ * ANDROID** - Privacy setting for how the notification should be shown on the lockscreen of Android 5+ devices.
7
7
  */
8
8
  export var OSLockScreenVisibility;
9
9
  (function (OSLockScreenVisibility) {
@@ -49,6 +49,7 @@ var OneSignal = /** @class */ (function (_super) {
49
49
  var _this = _super !== null && _super.apply(this, arguments) || this;
50
50
  /**
51
51
  * constants to use in inFocusDisplaying()
52
+ *
52
53
  * @hidden
53
54
  */
54
55
  _this.OSInFocusDisplayOption = {
@@ -111,4 +112,4 @@ var OneSignal = /** @class */ (function (_super) {
111
112
  return OneSignal;
112
113
  }(AwesomeCordovaNativePlugin));
113
114
  export { OneSignal };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvb25lc2lnbmFsL25neC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLHVDQUErQyxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUEwRmxDOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksc0JBYVg7QUFiRCxXQUFZLHNCQUFzQjtJQUNoQzs7T0FFRztJQUNILHVFQUFVLENBQUE7SUFDVjs7T0FFRztJQUNILHlFQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHdFQUFXLENBQUE7QUFDYixDQUFDLEVBYlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQWFqQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFhWDtBQWJELFdBQVksYUFBYTtJQUN2Qjs7T0FFRztJQUNILGlEQUFRLENBQUE7SUFDUjs7T0FFRztJQUNILDZEQUFjLENBQUE7SUFDZDs7T0FFRztJQUNILGlFQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFiVyxhQUFhLEtBQWIsYUFBYSxRQWF4QjtBQThLRCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLG1EQUFVLENBQUE7SUFDViwyREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2Qjs7SUF5SThCLDZCQUEwQjs7O1FBQ3ZEOzs7V0FHRztRQUNILDRCQUFzQixHQUFHO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1lBQ1AsVUFBVSxFQUFFLENBQUM7WUFDYixZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDOzs7SUFVRiw2QkFBUyxhQUFDLEtBQWEsRUFBRSxtQkFBNEI7SUFZckQsOENBQTBCO0lBYzFCLDRDQUF3QjtJQVl4Qiw2Q0FBeUI7SUFtQnpCLCtCQUFXLGFBQUMsUUFBc0Y7SUFVbEcsMkJBQU87SUFXUCw4REFBMEM7SUFZMUMsMkJBQU87SUFlUCwwQkFBTTtJQVlOLDJCQUFPLGFBQUMsR0FBVyxFQUFFLEtBQWE7SUFTbEMsNEJBQVEsYUFBQyxJQUFTO0lBUWxCLDZCQUFTLGFBQUMsR0FBVztJQVFyQiw4QkFBVSxhQUFDLElBQWM7SUFPekIsZ0RBQTRCO0lBWTVCLGlDQUFhLGFBQUMsTUFBZTtJQVk3QiwrQkFBVyxhQUFDLE1BQWU7SUFVM0IscUNBQWlCLGFBQUMsYUFBNEI7SUFXOUMsbUNBQWUsYUFBQyxNQUFlO0lBUS9CLGtEQUE4QjtJQVU5QixvQ0FBZ0IsYUFBQyxlQUErQjtJQVNoRCxzQ0FBa0IsYUFBQyxjQUFzQjtJQU16QyxrQ0FBYztJQU9kLG1DQUFlLGFBQUMsS0FBYTtJQVc3QiwrQkFBVyxhQUFDLFFBQW1EO0lBTy9ELHFDQUFpQixhQUFDLE1BQWU7SUFhakMseUNBQXFCO0lBZ0JyQiwyQ0FBdUI7SUFRdkIsNEJBQVEsYUFBQyxLQUFhLEVBQUUsY0FBdUI7SUFRL0MsK0JBQVc7SUFnQlgsZ0RBQTRCO0lBUTVCLCtDQUEyQjtJQVEzQixpREFBNkIsYUFBQyxRQUFpQjtJQVEvQyxzQ0FBa0IsYUFBQyxPQUFnQjtJQU9uQyw4Q0FBMEIsYUFBQyxRQUFrQjtJQVE3QyxxQ0FBaUIsYUFBQyxVQUFrQjtJQU1wQyx3Q0FBb0I7SUFXcEIsOEJBQVUsYUFBQyxHQUFXLEVBQUUsS0FBK0I7SUFVdkQsK0JBQVcsYUFBQyxRQUFnQjtJQVU1Qix1Q0FBbUIsYUFBQyxHQUFXO0lBVS9CLHlDQUFxQixhQUFDLElBQWM7SUFTcEMseUNBQXFCLGFBQUMsR0FBVztJQWFqQyxzQ0FBa0IsYUFBQyxLQUFjOzs7Ozs7O2dCQXpibEMsVUFBVTs7b0JBdmJYO0VBd2IrQiwwQkFBMEI7U0FBNUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmRvdmEsIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luLCBQbHVnaW4gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT1NOb3RpZmljYXRpb24ge1xuICAvKipcbiAgICogV2FzIGFwcCBpbiBmb2N1cy5cbiAgICovXG4gIGlzQXBwSW5Gb2N1cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXYXMgbm90aWZpY2F0aW9uIHNob3duIHRvIHRoZSB1c2VyLiBXaWxsIGJlIGZhbHNlIGZvciBzaWxlbnQgbm90aWZpY2F0aW9ucy5cbiAgICovXG4gIHNob3duPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gQW5kcm9pZCBOb3RpZmljYXRpb24gYXNzaWduZWQgdG8gdGhlIG5vdGlmaWNhdGlvbi4gQ2FuIGJlIHVzZWQgdG8gY2FuY2VsIG9yIHJlcGxhY2UgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGFuZHJvaWROb3RpZmljYXRpb25JZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFBheWxvYWQgcmVjZWl2ZWQgZnJvbSBPbmVTaWduYWwuXG4gICAqL1xuICBwYXlsb2FkPzogT1NOb3RpZmljYXRpb25QYXlsb2FkO1xuICAvKipcbiAgICogSG93IHRoZSBub3RpZmljYXRpb24gd2FzIGRpc3BsYXllZCB0byB0aGUgdXNlci4gQ2FuIGJlIHNldCB0byBgTm90aWZpY2F0aW9uYCwgYEluQXBwQWxlcnRgLCBvciBgTm9uZWAgaWYgaXQgd2FzIG5vdCBkaXNwbGF5ZWQuXG4gICAqL1xuICBkaXNwbGF5VHlwZT86IE9TRGlzcGxheVR5cGU7XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIE5vdGlmaWNhdGlvbiBpcyBhIHN1bW1hcnkgbm90aWZpY2F0aW9uIGZvciBhIGdyb3VwIHRoaXMgd2lsbCBjb250YWluIGFsbCBub3RpZmljYXRpb24gcGF5bG9hZHMgaXQgd2FzIGNyZWF0ZWQgZnJvbS5cbiAgICovXG4gIGdyb3VwZWROb3RpZmljYXRpb25zPzogT1NOb3RpZmljYXRpb25QYXlsb2FkW107XG4gIGFwcF9pZD86IHN0cmluZztcbiAgY29udGVudHM/OiBhbnk7XG4gIGhlYWRpbmdzPzogYW55O1xuICBpc0lvcz86IGJvb2xlYW47XG4gIGlzQW5kcm9pZD86IGJvb2xlYW47XG4gIGlzV1A/OiBib29sZWFuO1xuICBpc1dQX1dOUz86IGJvb2xlYW47XG4gIGlzQWRtPzogYm9vbGVhbjtcbiAgaXNDaHJvbWU/OiBib29sZWFuO1xuICBpc0Nocm9tZVdlYj86IGJvb2xlYW47XG4gIGlzU2FmYXJpPzogYm9vbGVhbjtcbiAgaXNBbnlXZWI/OiBib29sZWFuO1xuICBpbmNsdWRlZF9zZWdtZW50cz86IHN0cmluZ1tdO1xuICBleGNsdWRlZF9zZWdtZW50cz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX3BsYXllcl9pZHM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9pb3NfdG9rZW5zPzogc3RyaW5nW107XG4gIGluY2x1ZGVfYW5kcm9pZF9yZWdfaWRzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfd3BfdXJpcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX3dwX3duc191cmlzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfYW1hem9uX3JlZ19pZHM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9jaHJvbWVfcmVnX2lkcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX2Nocm9tZV93ZWJfcmVnX2lkcz86IHN0cmluZ1tdO1xuICBhcHBfaWRzPzogc3RyaW5nW107XG4gIHRhZ3M/OiBhbnlbXTtcbiAgaW9zX2JhZGdlVHlwZT86IHN0cmluZztcbiAgaW9zX2JhZGdlQ291bnQ/OiBudW1iZXI7XG4gIGlvc19zb3VuZD86IHN0cmluZztcbiAgYW5kcm9pZF9zb3VuZD86IHN0cmluZztcbiAgYWRtX3NvdW5kPzogc3RyaW5nO1xuICB3cF9zb3VuZD86IHN0cmluZztcbiAgd3Bfd25zX3NvdW5kPzogc3RyaW5nO1xuICBkYXRhPzogYW55O1xuICBidXR0b25zPzogYW55O1xuICBjb2xsYXBzZV9pZD86IHN0cmluZztcbiAgc21hbGxfaWNvbj86IHN0cmluZztcbiAgbGFyZ2VfaWNvbj86IHN0cmluZztcbiAgYmlnX3BpY3R1cmU/OiBzdHJpbmc7XG4gIGFkbV9zbWFsbF9pY29uPzogc3RyaW5nO1xuICBhZG1fbGFyZ2VfaWNvbj86IHN0cmluZztcbiAgYWRtX2JpZ19waWN0dXJlPzogc3RyaW5nO1xuICBjaHJvbWVfaWNvbj86IHN0cmluZztcbiAgY2hyb21lX2JpZ19waWN0dXJlPzogc3RyaW5nO1xuICBjaHJvbWVfd2ViX2ljb24/OiBzdHJpbmc7XG4gIGZpcmVmb3hfaWNvbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICBzZW5kX2FmdGVyPzogc3RyaW5nO1xuICBkZWxheWVkX29wdGlvbj86IHN0cmluZztcbiAgZGVsaXZlcnlfdGltZV9vZl9kYXk/OiBzdHJpbmc7XG4gIGFuZHJvaWRfbGVkX2NvbG9yPzogc3RyaW5nO1xuICBhbmRyb2lkX2FjY2VudF9jb2xvcj86IHN0cmluZztcbiAgYW5kcm9pZF92aXNpYmlsaXR5PzogbnVtYmVyO1xuICBjb250ZW50X2F2YWlsYWJsZT86IGJvb2xlYW47XG4gIGFtYXpvbl9iYWNrZ3JvdW5kX2RhdGE/OiBib29sZWFuO1xuICB0ZW1wbGF0ZV9pZD86IHN0cmluZztcbiAgYW5kcm9pZF9ncm91cD86IHN0cmluZztcbiAgYW5kcm9pZF9ncm91cF9tZXNzYWdlPzogYW55O1xuICBhZG1fZ3JvdXA/OiBzdHJpbmc7XG4gIGFkbV9ncm91cF9tZXNzYWdlPzogYW55O1xuICB0dGw/OiBudW1iZXI7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICBpb3NfY2F0ZWdvcnk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogKipBTkRST0lEKiogLSBQcml2YWN5IHNldHRpbmcgZm9yIGhvdyB0aGUgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBzaG93biBvbiB0aGUgbG9ja3NjcmVlbiBvZiBBbmRyb2lkIDUrIGRldmljZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE9TTG9ja1NjcmVlblZpc2liaWxpdHkge1xuICAvKipcbiAgICogRnVsbHkgdmlzaWJsZSAoZGVmYXVsdClcbiAgICovXG4gIFB1YmxpYyA9IDEsXG4gIC8qKlxuICAgKiBDb250ZW50cyBhcmUgaGlkZGVuXG4gICAqL1xuICBQcml2YXRlID0gMCxcbiAgLyoqXG4gICAqIE5vdCBzaG93blxuICAgKi9cbiAgU2VjcmV0ID0gLTEsXG59XG5cbi8qKlxuICogSG93IHRoZSBub3RpZmljYXRpb24gd2FzIGRpc3BsYXllZCB0byB0aGUgdXNlci4gUGFydCBvZiBPU05vdGlmaWNhdGlvbi4gU2VlIGluRm9jdXNEaXNwbGF5aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIGlzIHVzZWQuXG4gKi9cbmV4cG9ydCBlbnVtIE9TRGlzcGxheVR5cGUge1xuICAvKipcbiAgICogbm90aWZpY2F0aW9uIGlzIHNpbGVudCwgb3IgaW5Gb2N1c0Rpc3BsYXlpbmcgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBOb25lID0gMCxcbiAgLyoqXG4gICAqICgqKkRFRkFVTFQqKikgLSBuYXRpdmUgYWxlcnQgZGlhbG9nIGRpc3BsYXkuXG4gICAqL1xuICBJbkFwcEFsZXJ0ID0gMSxcbiAgLyoqXG4gICAqIG5hdGl2ZSBub3RpZmljYXRpb24gZGlzcGxheS5cbiAgICovXG4gIE5vdGlmaWNhdGlvbiA9IDIsXG59XG5cbi8qKlxuICogQ29udGVudHMgYW5kIHNldHRpbmdzIG9mIHRoZSBub3RpZmljYXRpb24gdGhlIHVzZXIgcmVjZWl2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NOb3RpZmljYXRpb25QYXlsb2FkIHtcbiAgLyoqXG4gICAqIE9uZVNpZ25hbCBub3RpZmljYXRpb24gVVVJRC5cbiAgICovXG4gIG5vdGlmaWNhdGlvbklEOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEJvZHkgb2YgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGJvZHk6IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBhZGRpdGlvbmFsIGRhdGEgdGhhdCB3YXMgc2VudCB3aXRoIHRoZSBub3RpZmljYXRpb24uIFNldCBvbiB0aGUgZGFzaGJvYXJkIHVuZGVyIE9wdGlvbnMgPiBBZGRpdGlvbmFsIERhdGFcbiAgICogb3Igd2l0aCB0aGUgJ2RhdGEnIGZpZWxkIG9uIHRoZSBSRVNUIEFQSS5cbiAgICovXG4gIGFkZGl0aW9uYWxEYXRhPzogYW55O1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBTbWFsbCBpY29uIHJlc291cmNlIG5hbWUgc2V0IG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBzbWFsbEljb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIExhcmdlIGljb24gc2V0IG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBsYXJnZUljb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIEJpZyBwaWN0dXJlIGltYWdlIHNldCBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgYmlnUGljdHVyZT86IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gQWNjZW50IGNvbG9yIHNob3duIGFyb3VuZCBzbWFsbCBub3RpZmljYXRpb24gaWNvbiBvbiBBbmRyb2lkIDUrIGRldmljZXMuIEFSR0IgZm9ybWF0LlxuICAgKi9cbiAgc21hbGxJY29uQWNjZW50Q29sb3I/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVUkwgdG8gb3BlbiB3aGVuIG9wZW5pbmcgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGxhdW5jaFVSTD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNvdW5kIHJlc291cmNlIHRvIHBsYXkgd2hlbiB0aGUgbm90aWZpY2F0aW9uIGlzIHNob3duLlxuICAgKi9cbiAgc291bmQ6IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gRGV2aWNlcyB0aGF0IGhhdmUgYSBub3RpZmljYXRpb24gTEVEIHdpbGwgYmxpbmsgaW4gdGhpcyBjb2xvci4gQVJHQiBmb3JtYXQuXG4gICAqL1xuICBsZWRDb2xvcj86IHN0cmluZztcbiAgbG9ja1NjcmVlblZpc2liaWxpdHk/OiBPU0xvY2tTY3JlZW5WaXNpYmlsaXR5O1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBOb3RpZmljYXRpb25zIHdpdGggdGhpcyBzYW1lIGtleSB3aWxsIGJlIGdyb3VwZWQgdG9nZXRoZXIgYXMgYSBzaW5nbGUgc3VtbWFyeSBub3RpZmljYXRpb24uXG4gICAqL1xuICBncm91cEtleT86IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gU3VtbWFyeSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgc3VtbWFyeSBub3RpZmljYXRpb24uXG4gICAqL1xuICBncm91cE1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFjdGlvbiBidXR0b25zIG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBhY3Rpb25CdXR0b25zOiBPU0FjdGlvbkJ1dHRvbltdO1xuICAvKipcbiAgICogKipBTkRST0lEKiogLSBUaGUgR29vZ2xlIHByb2plY3QgbnVtYmVyIHRoZSBub3RpZmljYXRpb24gd2FzIHNlbnQgdW5kZXIuXG4gICAqL1xuICBmcm9tUHJvamVjdE51bWJlcj86IHN0cmluZztcbiAgLyoqXG4gICAqICoqQU5EUk9JRCoqIC0gSWYgYSBiYWNrZ3JvdW5kIGltYWdlIHdhcyBzZXQgdGhpcyBvYmplY3Qgd2lsbCBiZSBhdmFpbGFibGUuXG4gICAqL1xuICBiYWNrZ3JvdW5kSW1hZ2VMYXlvdXQ/OiBPU0JhY2tncm91bmRJbWFnZUxheW91dDtcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFjdGlvbiBidXR0b25zIG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICByYXdQYXlsb2FkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGlzdCBvZiBhY3Rpb24gYnV0dG9ucyBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TQWN0aW9uQnV0dG9uIHtcbiAgLyoqXG4gICAqIElkIGFzc2lnbmVkIHRvIHRoZSBidXR0b24uXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogVGV4dCBzaG93IG9uIHRoZSBidXR0b24gdG8gdGhlIHVzZXIuXG4gICAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAqKkFORFJPSUQqKiAtIEljb24gc2hvd24gb24gdGhlIGJ1dHRvbi5cbiAgICovXG4gIGljb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBPU1Blcm1pc3Npb25TdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TUGVybWlzc2lvblN0YXRlIHtcbiAgLyoqXG4gICAqIFVzZXIgd2FzIHByb21wdGVkLlxuICAgKi9cbiAgaGFzUHJvbXB0ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQZXJtaXNzaW9ucyBTdGF0dXMgKGlPUyBPbmx5KVxuICAgKi9cbiAgc3RhdHVzOiBhbnk7XG4gIC8qKlxuICAgKiBQZXJtaXNzaW9ucyBTdGF0ZSAoQW5kcm9pZCBPbmx5KVxuICAgKi9cbiAgc3RhdGU6IGFueTtcbn1cblxuLyoqXG4gKiBPU1N1YnNjcmlwdGlvblN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NTdWJzY3JpcHRpb25TdGF0ZSB7XG4gIHN1YnNjcmliZWQ6IGJvb2xlYW47XG4gIHVzZXJTdWJzY3JpcHRpb25TZXR0aW5nOiBhbnk7XG4gIHVzZXJJZDogYW55O1xuICBwdXNoVG9rZW46IGFueTtcbn1cblxuLyoqXG4gKiBTdWJzY3JpcHRpb24gYW5kIHBlcm1pc3Npb25zIHN0YXR1c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TUGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlIHtcbiAgLyoqXG4gICAqIElkIGFzc2lnbmVkIHRvIHRoZSBidXR0b24uXG4gICAqL1xuICBwZXJtaXNzaW9uU3RhdHVzOiBPU1Blcm1pc3Npb25TdGF0ZTtcbiAgLyoqXG4gICAqIFRleHQgc2hvdyBvbiB0aGUgYnV0dG9uIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgc3Vic2NyaXB0aW9uU3RhdHVzOiBPU1N1YnNjcmlwdGlvblN0YXRlO1xufVxuXG4vKipcbiAqICoqQU5EUk9JRCoqIC0gSWYgYSBiYWNrZ3JvdW5kIGltYWdlIHdhcyBzZXQsIHRoaXMgb2JqZWN0IHdpbGwgYmUgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TQmFja2dyb3VuZEltYWdlTGF5b3V0IHtcbiAgLyoqXG4gICAqIEltYWdlIFVSTCBvciBuYW1lIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4gICAqL1xuICBpbWFnZTogc3RyaW5nO1xuICAvKipcbiAgICogVGV4dCBjb2xvciBvZiB0aGUgdGl0bGUgb24gdGhlIG5vdGlmaWNhdGlvbi4gQVJHQiBGb3JtYXQuXG4gICAqL1xuICB0aXRsZVRleHRDb2xvcjogc3RyaW5nO1xuICAvKipcbiAgICogVGV4dCBjb2xvciBvZiB0aGUgYm9keSBvbiB0aGUgbm90aWZpY2F0aW9uLiBBUkdCIEZvcm1hdC5cbiAgICovXG4gIGJvZHlUZXh0Q29sb3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBhIG5vdGlmaWNhdGlvbiB0aGUgdXNlciByZWNlaXZlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU05vdGlmaWNhdGlvbk9wZW5lZFJlc3VsdCB7XG4gIGFjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIFdhcyB0aGUgbm90aWZpY2F0aW9uIG9wZW5lZCBub3JtYWxseSAoYE9wZW5lZGApIG9yIHdhcyBhIGJ1dHRvbiBwcmVzc2VkIG9uIHRoZSBub3RpZmljYXRpb24gKGBBY3Rpb25UYWtlbmApLlxuICAgICAqL1xuICAgIHR5cGU6IE9TQWN0aW9uVHlwZTtcbiAgICAvKipcbiAgICAgKiBJZiBgdHlwZWAgPT0gYEFjdGlvblRha2VuYCB0aGVuIHRoaXMgd2lsbCBjb250YWluIHRoZSBpZCBvZiB0aGUgYnV0dG9uIHByZXNzZWQuXG4gICAgICovXG4gICAgYWN0aW9uSUQ/OiBzdHJpbmc7XG4gIH07XG4gIG5vdGlmaWNhdGlvbjogT1NOb3RpZmljYXRpb247XG59XG5cbmV4cG9ydCBlbnVtIE9TQWN0aW9uVHlwZSB7XG4gIE9wZW5lZCA9IDAsXG4gIEFjdGlvblRha2UgPSAxLFxufVxuXG4vKipcbiAqIERldGFpbHMgYWJvdXQgdGhlIEluLUFwcCBNZXNzYWdlIGFjdGlvbiBlbGVtZW50IChidXR0b24gb3IgaW1hZ2UpIHRoYXQgd2FzIHRhcHBlZCBvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU0luQXBwTWVzc2FnZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBjbGljayBuYW1lIGRlZmluZWQgZm9yIHRoZSBhY3Rpb24gZWxlbWVudC4gbnVsbCBvciBuaWwgKGlPUykgaWYgbm90IHNldC5cbiAgICovXG4gIGNsaWNrX25hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIFVSTCB0aGF0IG9wZW5zIHdoZW4gdGhlIGFjdGlvbiB0YWtlcyBwbGFjZS4gbnVsbCBvciBuaWwgKGlPUykgaWYgbm90IHNldC5cbiAgICovXG4gIGNsaWNrX3VybDogc3RyaW5nO1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhlIHVzZXIgaGFzIHByZXNzZWQgYW55IGFjdGlvbiBvbiB0aGUgSW4tQXBwIE1lc3NhZ2UuXG4gICAqL1xuICBmaXJzdF9jbGljazogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIEluLUFwcCBNZXNzYWdlIHdpbGwgYW5pbWF0ZSBvZmYgdGhlIHNjcmVlbi4gSWYgYGZhbHNlYCwgdGhlIEluLUFwcCBNZXNzYWdlIHdpbGwgc3RheSBvbiBzY3JlZW4gdW50aWwgdGhlIHVzZXIgZGlzbWlzc2VzIGl0LlxuICAgKi9cbiAgY2xvc2VzX21lc3NhZ2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQG5hbWUgT25lU2lnbmFsXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBPbmVTaWduYWwgcGx1Z2luIGlzIGFuIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBmb3IgdXNpbmcgdGhlIFtPbmVTaWduYWxdKGh0dHBzOi8vb25lc2lnbmFsLmNvbS8pIFNlcnZpY2UuXG4gKiBPbmVTaWduYWwgaXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGRlbGl2ZXJpbmcgcHVzaCBub3RpZmljYXRpb25zLlxuICpcbiAqIFBsZWFzZSB2aWV3IHRoZSBvZmZpY2lhbCBbT25lU2lnbmFsIElvbmljIFNESyBJbnN0YWxsYXRpb25dKGh0dHBzOi8vZG9jdW1lbnRhdGlvbi5vbmVzaWduYWwuY29tL2RvY3MvaW9uaWMtc2RrLXNldHVwKSBndWlkZVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogIyMjIyBJY29uc1xuICogSWYgeW91IHdhbnQgdG8gdXNlIGdlbmVyYXRlZCBpY29ucyB3aXRoIGNvbW1hbmQgYGlvbmljIGNvcmRvdmEgcmVzb3VyY2VzYDpcbiAqXG4gKiAxLiBBZGQgYSBmaWxlIHRvIHlvdXIgYGhvb2tzYCBkaXJlY3RvcnkgY2FsbGVkIGBjb3B5X2FuZHJvaWRfbm90aWZpY2F0aW9uX2ljb25zLmpzYFxuICpcbiAqIDIuIENvbmZpZ3VyZSB0aGUgaG9vayBpbiB5b3VyIGNvbmZpZy54bWxcbiAqIGBgYFxuICogICAgIDxwbGF0Zm9ybSBuYW1lPVwiYW5kcm9pZFwiPlxuICogICAgICAgICA8aG9vayB0eXBlPVwiYWZ0ZXJfcHJlcGFyZVwiIHNyYz1cImhvb2tzL2NvcHlfYW5kcm9pZF9ub3RpZmljYXRpb25faWNvbnMuanNcIiAvPlxuICogICAgIDwvcGxhdGZvcm0+XG4gKiBgYGBcbiAqXG4gKiAzLiBQdXQgdGhlIGZvbGxvd2luZyBjb2RlIGluIGl0OlxuICpcbiAqIGBgYFxuICogIyEvdXNyL2Jpbi9lbnYgbm9kZVxuICpcbiAqIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gKiB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAqXG4gKiB2YXIgZmlsZXN0b2NvcHkgPSBbe1xuICogICAgIFwicmVzb3VyY2VzL2FuZHJvaWQvaWNvbi9kcmF3YWJsZS1oZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUtbWRwaS1pY29uLnBuZ1wiOlxuICogICAgICAgICBcInBsYXRmb3Jtcy9hbmRyb2lkL2FwcC9zcmMvbWFpbi9yZXMvZHJhd2FibGUtbWRwaS9pY19zdGF0X29uZXNpZ25hbF9kZWZhdWx0LnBuZ1wiXG4gKiB9LCB7XG4gKiAgICAgXCJyZXNvdXJjZXMvYW5kcm9pZC9pY29uL2RyYXdhYmxlLXhoZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS14aGRwaS9pY19zdGF0X29uZXNpZ25hbF9kZWZhdWx0LnBuZ1wiXG4gKiB9LCB7XG4gKiAgICAgXCJyZXNvdXJjZXMvYW5kcm9pZC9pY29uL2RyYXdhYmxlLXh4aGRwaS1pY29uLnBuZ1wiOlxuICogICAgICAgICBcInBsYXRmb3Jtcy9hbmRyb2lkL2FwcC9zcmMvbWFpbi9yZXMvZHJhd2FibGUteHhoZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUteHh4aGRwaS1pY29uLnBuZ1wiOlxuICogICAgICAgICBcInBsYXRmb3Jtcy9hbmRyb2lkL2FwcC9zcmMvbWFpbi9yZXMvZHJhd2FibGUteHh4aGRwaS9pY19zdGF0X29uZXNpZ25hbF9kZWZhdWx0LnBuZ1wiXG4gKiB9IF07XG4gKlxuICogbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihjb250ZXh0KSB7XG4gKlxuICogICAgIC8vIG5vIG5lZWQgdG8gY29uZmlndXJlIGJlbG93XG4gKiAgICAgdmFyIHJvb3RkaXIgPSBjb250ZXh0Lm9wdHMucHJvamVjdFJvb3Q7XG4gKlxuICogICAgIGZpbGVzdG9jb3B5LmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gKiAgICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAqICAgICAgICAgICAgIHZhciB2YWwgPSBvYmpba2V5XTtcbiAqICAgICAgICAgICAgIHZhciBzcmNmaWxlID0gcGF0aC5qb2luKHJvb3RkaXIsIGtleSk7XG4gKiAgICAgICAgICAgICB2YXIgZGVzdGZpbGUgPSBwYXRoLmpvaW4ocm9vdGRpciwgdmFsKTtcbiAqICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY29weWluZyBcIitzcmNmaWxlK1wiIHRvIFwiK2Rlc3RmaWxlKTtcbiAqICAgICAgICAgICAgIHZhciBkZXN0ZGlyID0gcGF0aC5kaXJuYW1lKGRlc3RmaWxlKTtcbiAqICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHNyY2ZpbGUpICYmIGZzLmV4aXN0c1N5bmMoZGVzdGRpcikpIHtcbiAqICAgICAgICAgICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKHNyY2ZpbGUpLnBpcGUoXG4gKiAgICAgICAgICAgICAgICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGRlc3RmaWxlKSk7XG4gKiAgICAgICAgICAgICB9XG4gKiAgICAgICAgIH0pO1xuICogICAgIH0pO1xuICpcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiAzLiBGcm9tIHRoZSByb290IG9mIHlvdXIgcHJvamVjdCBtYWtlIHRoZSBmaWxlIGV4ZWN1dGFibGU6XG4gKiBgJCBjaG1vZCAreCBob29rcy9jb3B5X2FuZHJvaWRfbm90aWZpY2F0aW9uX2ljb25zLmpzYFxuICpcbiAqXG4gKiBAdXNhZ2VcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IE9uZVNpZ25hbCB9IGZyb20gJ0Bhd2Vzb21lLWNvcmRvdmEtcGx1Z2lucy9vbmVzaWduYWwvbmd4JztcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIG9uZVNpZ25hbDogT25lU2lnbmFsKSB7IH1cbiAqXG4gKiAuLi5cbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5zdGFydEluaXQoJ2IyZjdmOTY2LWQ4Y2MtMTFlNC1iZWQxLWRmOGYwNWJlNTViYScsICc3MDMzMjI3NDQyNjEnKTtcbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5pbkZvY3VzRGlzcGxheWluZyh0aGlzLm9uZVNpZ25hbC5PU0luRm9jdXNEaXNwbGF5T3B0aW9uLkluQXBwQWxlcnQpO1xuICpcbiAqIHRoaXMub25lU2lnbmFsLmhhbmRsZU5vdGlmaWNhdGlvblJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAqICAvLyBkbyBzb21ldGhpbmcgd2hlbiBub3RpZmljYXRpb24gaXMgcmVjZWl2ZWRcbiAqIH0pO1xuICpcbiAqIHRoaXMub25lU2lnbmFsLmhhbmRsZU5vdGlmaWNhdGlvbk9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gKiAgIC8vIGRvIHNvbWV0aGluZyB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIG9wZW5lZFxuICogfSk7XG4gKlxuICogdGhpcy5vbmVTaWduYWwuZW5kSW5pdCgpO1xuICogYGBgXG4gKiBAaW50ZXJmYWNlc1xuICogT1NOb3RpZmljYXRpb25cbiAqIE9TTG9ja1NjcmVlblZpc2liaWxpdHlcbiAqIE9TRGlzcGxheVR5cGVcbiAqIE9TTm90aWZpY2F0aW9uUGF5bG9hZFxuICogT1NBY3Rpb25CdXR0b25cbiAqIE9TQmFja2dyb3VuZEltYWdlTGF5b3V0XG4gKiBPU05vdGlmaWNhdGlvbk9wZW5lZFJlc3VsdFxuICogT1NBY3Rpb25UeXBlXG4gKiBPU0luQXBwTWVzc2FnZUFjdGlvblxuICovXG5AUGx1Z2luKHtcbiAgcGx1Z2luTmFtZTogJ09uZVNpZ25hbCcsXG4gIHBsdWdpbjogJ29uZXNpZ25hbC1jb3Jkb3ZhLXBsdWdpbicsXG4gIHBsdWdpblJlZjogJ3BsdWdpbnMuT25lU2lnbmFsJyxcbiAgcmVwbzogJ2h0dHBzOi8vZ2l0aHViLmNvbS9PbmVTaWduYWwvT25lU2lnbmFsLUNvcmRvdmEtU0RLJyxcbiAgcGxhdGZvcm1zOiBbJ0FtYXpvbiBGaXJlIE9TJywgJ0FuZHJvaWQnLCAnaU9TJywgJ1dpbmRvd3MnXSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT25lU2lnbmFsIGV4dGVuZHMgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4ge1xuICAvKipcbiAgICogY29uc3RhbnRzIHRvIHVzZSBpbiBpbkZvY3VzRGlzcGxheWluZygpXG4gICAqIEBoaWRkZW5cbiAgICovXG4gIE9TSW5Gb2N1c0Rpc3BsYXlPcHRpb24gPSB7XG4gICAgTm9uZTogMCxcbiAgICBJbkFwcEFsZXJ0OiAxLFxuICAgIE5vdGlmaWNhdGlvbjogMixcbiAgfTtcblxuICAvKipcbiAgICogU3RhcnQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIE9uY2UgeW91IGFyZSBkb25lIGNvbmZpZ3VyaW5nIE9uZVNpZ25hbCwgY2FsbCB0aGUgYGVuZEluaXRgIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgWW91ciBPbmVTaWduYWwgYXBwIGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBnb29nbGVQcm9qZWN0TnVtYmVyICoqQU5EUk9JRCoqIC0geW91ciBHb29nbGUgcHJvamVjdCBudW1iZXI7IG9ubHkgcmVxdWlyZWQgZm9yIEFuZHJvaWQgR0NNL0ZDTSBwdXNoZXMuXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc3RhcnRJbml0KGFwcElkOiBzdHJpbmcsIGdvb2dsZVByb2plY3ROdW1iZXI/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBydW4gd2hlbiBhIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZCwgd2hldGhlciBpdCB3YXMgZGlzcGxheWVkIG9yIG5vdC5cbiAgICpcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPbmVTaWduYWxSZWNlaXZlZE5vdGlmaWNhdGlvbj59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgaGFuZGxlTm90aWZpY2F0aW9uUmVjZWl2ZWQoKTogT2JzZXJ2YWJsZTxPU05vdGlmaWNhdGlvbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBydW4gd2hlbiBhIG5vdGlmaWNhdGlvbiBpcyB0YXBwZWQgb24gZnJvbSB0aGUgbm90aWZpY2F0aW9uIHNoYWRlICgqKkFORFJPSUQqKikgb3Igbm90aWZpY2F0aW9uXG4gICAqIGNlbnRlciAoKippT1MqKiksIG9yIHdoZW4gY2xvc2luZyBhbiBBbGVydCBub3RpZmljYXRpb24gc2hvd24gaW4gdGhlIGFwcCAoaWYgSW5BcHBBbGVydCBpcyBlbmFibGVkIGluXG4gICAqIGluRm9jdXNEaXNwbGF5aW5nKS5cbiAgICpcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPbmVTaWduYWxPcGVuZWROb3RpZmljYXRpb24+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGhhbmRsZU5vdGlmaWNhdGlvbk9wZW5lZCgpOiBPYnNlcnZhYmxlPE9TTm90aWZpY2F0aW9uT3BlbmVkUmVzdWx0PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0byBwcm9jZXNzIGFuIEluLUFwcCBNZXNzYWdlIHRoZSB1c2VyIGp1c3QgdGFwcGVkIG9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE9TSW5BcHBNZXNzYWdlQWN0aW9uPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBoYW5kbGVJbkFwcE1lc3NhZ2VDbGlja2VkKCk6IE9ic2VydmFibGU8T1NJbkFwcE1lc3NhZ2VBY3Rpb24+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogKippT1MqKiAtIFNldHRpbmdzIGZvciBpT1MgYXBwc1xuICAgKlxuICAgKiBAcGFyYW0gc2V0dGluZ3NcbiAgICogIGtPU1NldHRpbmdzS2V5QXV0b1Byb21wdDogYm9vbGVhbiA9IHRydWVcbiAgICogIEF1dG8gcHJvbXB0IHVzZXIgZm9yIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogIGtPU1NldHRpbmdzS2V5SW5BcHBMYXVuY2hVUkw6IGJvb2xlYW4gPSBmYWxzZVxuICAgKiAgTGF1bmNoIG5vdGlmaWNhdGlvbnMgd2l0aCBhIGxhdW5jaCBVUkwgYXMgYW4gaW4gYXBwIHdlYnZpZXcuXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgICBwbGF0Zm9ybXM6IFsnaU9TJ10sXG4gIH0pXG4gIGlPU1NldHRpbmdzKHNldHRpbmdzOiB7IGtPU1NldHRpbmdzS2V5QXV0b1Byb21wdDogYm9vbGVhbjsga09TU2V0dGluZ3NLZXlJbkFwcExhdW5jaFVSTDogYm9vbGVhbiB9KTogYW55IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0SW5pdGAgdG8gY29tcGxldGUgaW5pdGlhbGl6YXRpb24gb2YgT25lU2lnbmFsLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVuZEluaXQoKTogYW55IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUHJvbXB0IHRoZSB1c2VyIGZvciBub3RpZmljYXRpb24gcGVybWlzc2lvbnMuIENhbGxiYWNrIGZpcmVzIGFzIHNvb24gYXMgdGhlIHVzZXIgYWNjZXB0cyBvciBkZWNsaW5lcyBub3RpZmljYXRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBwbGF0Zm9ybXM6IFsnaU9TJ10sXG4gIH0pXG4gIHByb21wdEZvclB1c2hOb3RpZmljYXRpb25zV2l0aFVzZXJSZXNwb25zZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSBsaXN0IG9mIHRhZ3MgdGhhdCBoYXZlIGJlZW4gc2V0IG9uIHRoZSB1c2VyIGZyb20gdGhlIE9uZVNpZ25hbCBzZXJ2ZXIuXG4gICAqXG4gICAqICoqUXVpcmsqKjogWW91IG11c3Qgd2FpdCBmb3IgYGdldFRhZ3NgIHRvIHJlc29sdmUgYmVmb3JlIGNhbGxpbmcgaXQgYWdhaW4sIGFzIHRoZSBwbHVnaW4gd2lsbCBvbmx5IHByb2Nlc3MgdGhlIGxhc3QgbWV0aG9kIGNhbGwgYW5kIGRpc2NhcmQgYW55IHByZXZpb3VzIG9uZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0YWdzIGFyZSByZWNpZXZlZC5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0VGFncygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZXRzIHlvdSByZXRyaWV2ZSB0aGUgT25lU2lnbmFsIHVzZXIgaWQgYW5kIGRldmljZSB0b2tlbi5cbiAgICogWW91ciBoYW5kbGVyIGlzIGNhbGxlZCBhZnRlciB0aGUgZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIHdpdGggT25lU2lnbmFsLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIGlmIHRoZSBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLlxuICAgKlxuICAgKiAgdXNlcklkIHtzdHJpbmd9IE9uZVNpZ25hbCB1c2VySWQgaXMgYSBVVUlEIGZvcm1hdHRlZCBzdHJpbmcuICh1bmlxdWUgcGVyIGRldmljZSBwZXIgYXBwKVxuICAgKlxuICAgKiAgcHVzaFRva2VuIHtzdHJpbmd9IEEgcHVzaCB0b2tlbiBpcyBhIEdvb2dsZS9BcHBsZSBhc3NpZ25lZCBpZGVudGlmaWVyKHVuaXF1ZSBwZXIgZGV2aWNlIHBlciBhcHApLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRJZHMoKTogUHJvbWlzZTx7IHVzZXJJZDogc3RyaW5nOyBwdXNoVG9rZW46IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRhZyBhIHVzZXIgYmFzZWQgb24gYW4gYXBwIGV2ZW50IG9mIHlvdXIgY2hvb3Npbmcgc28gbGF0ZXIgeW91IGNhbiBjcmVhdGUgc2VnbWVudHMgb24gW29uZXNpZ25hbC5jb21dKGh0dHBzOi8vb25lc2lnbmFsLmNvbS8pIHRvIHRhcmdldCB0aGVzZSB1c2Vycy5cbiAgICogUmVjb21tZW5kIHVzaW5nIHNlbmRUYWdzIG92ZXIgc2VuZFRhZyBpZiB5b3UgbmVlZCB0byBzZXQgbW9yZSB0aGFuIG9uZSB0YWcgb24gYSB1c2VyIGF0IGEgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IEtleSBvZiB5b3VyIGNob29zaW5nIHRvIGNyZWF0ZSBvciB1cGRhdGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBWYWx1ZSB0byBzZXQgb24gdGhlIGtleS4gTk9URTogUGFzc2luZyBpbiBhIGJsYW5rIFN0cmluZyBkZWxldGVzIHRoZSBrZXksIHlvdSBjYW4gYWxzbyBjYWxsIGRlbGV0ZVRhZy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZW5kVGFnKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUYWcgYSB1c2VyIGJhc2VkIG9uIGFuIGFwcCBldmVudCBvZiB5b3VyIGNob29zaW5nIHNvIGxhdGVyIHlvdSBjYW4gY3JlYXRlIHNlZ21lbnRzIG9uIFtvbmVzaWduYWwuY29tXShodHRwczovL29uZXNpZ25hbC5jb20vKSB0byB0YXJnZXQgdGhlc2UgdXNlcnMuXG4gICAqIFJlY29tbWVuZCB1c2luZyBzZW5kVGFncyBvdmVyIHNlbmRUYWcgaWYgeW91IG5lZWQgdG8gc2V0IG1vcmUgdGhhbiBvbmUgdGFnIG9uIGEgdXNlciBhdCBhIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBQYXNzIGEganNvbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgbGlrZToge2tleTogXCJ2YWx1ZVwiLCBrZXkyOiBcInZhbHVlMlwifVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNlbmRUYWdzKGpzb246IGFueSk6IHZvaWQge31cblxuICAvKipcbiAgICogRGVsZXRlcyBhIHRhZyB0aGF0IHdhcyBwcmV2aW91c2x5IHNldCBvbiBhIHVzZXIgd2l0aCBgc2VuZFRhZ2Agb3IgYHNlbmRUYWdzYC4gVXNlIGBkZWxldGVUYWdzYCBpZiB5b3UgbmVlZCB0byBkZWxldGUgbW9yZSB0aGFuIG9uZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IEtleSB0byByZW1vdmUuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZGVsZXRlVGFnKGtleTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRhZ3MgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2V0IG9uIGEgdXNlciB3aXRoIGBzZW5kVGFnYCBvciBgc2VuZFRhZ3NgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBLZXlzIHRvIHJlbW92ZS5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBkZWxldGVUYWdzKGtleXM6IHN0cmluZ1tdKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgd2hlbiB5b3Ugd291bGQgbGlrZSB0byBwcm9tcHQgYW4gaU9TIHVzZXIgdG8gYWNjZXB0IHB1c2ggbm90aWZpY2F0aW9ucyB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBwcm9tcHQuXG4gICAqIE9ubHkgd29ya3MgaWYgeW91IHNldCBga09TU2V0dGluZ3NBdXRvUHJvbXB0YCB0byBgZmFsc2VgIGluIGBpT1NTZXR0aW5nc2BcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZWdpc3RlckZvclB1c2hOb3RpZmljYXRpb25zKCk6IHZvaWQge31cblxuICAvKipcbiAgICogV2FybmluZzpcbiAgICogT25seSBhcHBsaWVzIHRvIEFuZHJvaWQgYW5kIEFtYXpvbi4gWW91IGNhbiBjYWxsIHRoaXMgZnJvbSB5b3VyIFVJIGZyb20gYSBidXR0b24gcHJlc3MgZm9yIGV4YW1wbGUgdG8gZ2l2ZSB5b3VyIHVzZXIncyBvcHRpb25zIGZvciB5b3VyIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgT25lU2lnbmFsIGFsd2F5cyB2aWJyYXRlcyB0aGUgZGV2aWNlIHdoZW4gYSBub3RpZmljYXRpb24gaXMgZGlzcGxheWVkIHVubGVzcyB0aGUgZGV2aWNlIGlzIGluIGEgdG90YWwgc2lsZW50IG1vZGUuXG4gICAqIFBhc3NpbmcgZmFsc2UgbWVhbnMgdGhhdCB0aGUgZGV2aWNlIHdpbGwgb25seSB2aWJyYXRlIGxpZ2h0bHkgd2hlbiB0aGUgZGV2aWNlIGlzIGluIGl0J3MgdmlicmF0ZSBvbmx5IG1vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmFsc2UgdG8gZGlzYWJsZSB2aWJyYXRlLCB0cnVlIHRvIHJlLWVuYWJsZSBpdC5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlbmFibGVWaWJyYXRlKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogV2FybmluZzpcbiAgICogT25seSBhcHBsaWVzIHRvIEFuZHJvaWQgYW5kIEFtYXpvbi4gWW91IGNhbiBjYWxsIHRoaXMgZnJvbSB5b3VyIFVJIGZyb20gYSBidXR0b24gcHJlc3MgZm9yIGV4YW1wbGUgdG8gZ2l2ZSB5b3VyIHVzZXIncyBvcHRpb25zIGZvciB5b3VyIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgT25lU2lnbmFsIHBsYXlzIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IG5vdGlmaWNhdGlvbiBzb3VuZCB3aGVuIHRoZSBkZXZpY2UncyBub3RpZmljYXRpb24gc3lzdGVtIHZvbHVtZSBpcyB0dXJuZWQgb24uXG4gICAqIFBhc3NpbmcgZmFsc2UgbWVhbnMgdGhhdCB0aGUgZGV2aWNlIHdpbGwgb25seSB2aWJyYXRlIHVubGVzcyB0aGUgZGV2aWNlIGlzIHNldCB0byBhIHRvdGFsIHNpbGVudCBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZhbHNlIHRvIGRpc2FibGUgc291bmQsIHRydWUgdG8gcmUtZW5hYmxlIGl0LlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVuYWJsZVNvdW5kKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICpcbiAgICogU2V0dGluZyB0byBjb250cm9sIGhvdyBPbmVTaWduYWwgbm90aWZpY2F0aW9ucyB3aWxsIGJlIHNob3duIHdoZW4gb25lIGlzIHJlY2VpdmVkIHdoaWxlIHlvdXIgYXBwIGlzIGluIGZvY3VzLiBCeSBkZWZhdWx0IHRoaXMgaXMgc2V0IHRvIGluQXBwQWxlcnQsIHdoaWNoIGNhbiBiZSBoZWxwZnVsIGR1cmluZyBkZXZlbG9wbWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtEaXNwbGF5VHlwZX0gZGlzcGxheU9wdGlvblxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGluRm9jdXNEaXNwbGF5aW5nKGRpc3BsYXlPcHRpb246IE9TRGlzcGxheVR5cGUpOiBhbnkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBmYWxzZSB0byBvcHQgdXNlcnMgb3V0IG9mIHJlY2VpdmluZyBhbGwgbm90aWZpY2F0aW9ucyB0aHJvdWdoIE9uZVNpZ25hbC5cbiAgICogWW91IGNhbiBwYXNzIHRydWUgbGF0ZXIgdG8gb3B0IHVzZXJzIGJhY2sgaW50byBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldFN1YnNjcmlwdGlvbihlbmFibGU6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBub3RpZmljYXRpb24gYW5kIHBlcm1pc3Npb24gc3RhdGUuIFJldHVybnMgYSBPU1Blcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZSB0eXBlIGRlc2NyaWJlZCBiZWxvdy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8T1NQZXJtaXNzaW9uU3Vic2NyaXB0aW9uU3RhdGU+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRQZXJtaXNzaW9uU3Vic2NyaXB0aW9uU3RhdGUoKTogUHJvbWlzZTxPU1Blcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge25vdGlmaWNhdGlvbk9ian0gUGFyYW1ldGVycyBzZWUgUE9TVCBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2N1bWVudGF0aW9uLm9uZXNpZ25hbC5jb20vdjIuMC9kb2NzL25vdGlmaWNhdGlvbnMtY3JlYXRlLW5vdGlmaWNhdGlvbilcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyBpZiB0aGUgbm90aWZpY2F0aW9uIHdhcyBzZW5kIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgcG9zdE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25PYmo6IE9TTm90aWZpY2F0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBhIHNpbmdsZSBPbmVTaWduYWwgbm90aWZpY2F0aW9uIGJhc2VkIG9uIGl0cyBBbmRyb2lkIG5vdGlmaWNhdGlvbiBpbnRlZ2VyIGlkLiBVc2UgaW5zdGVhZCBvZiBOb3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChpZCk7IG90aGVyd2lzZSB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYmUgcmVzdG9yZWQgd2hlbiB5b3VyIGFwcCBpcyByZXN0YXJ0ZWQuXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb25JZCB7c3RyaW5nfVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JZDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBQcm9tcHRzIHRoZSB1c2VyIGZvciBsb2NhdGlvbiBwZXJtaXNzaW9uIHRvIGFsbG93IGdlb3RhZ2dpbmcgYmFzZWQgb24gdGhlIFwiTG9jYXRpb24gcmFkaXVzXCIgZmlsdGVyIG9uIHRoZSBPbmVTaWduYWwgZGFzaGJvYXJkLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHByb21wdExvY2F0aW9uKCk6IHZvaWQge31cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVtYWlsIHtzdHJpbmd9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc3luY0hhc2hlZEVtYWlsKGVtYWlsOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBsb2dnaW5nIHRvIGhlbHAgZGVidWcgaWYgeW91IHJ1biBpbnRvIGFuIGlzc3VlIHNldHRpbmcgdXAgT25lU2lnbmFsLlxuICAgKiBUaGUgbG9nZ2luZyBsZXZlbHMgYXJlIGFzIGZvbGxvd3M6IDAgPSBOb25lLCAxPSBGYXRhbCwgMiA9IEVycm9ycywgMyA9IFdhcm5pbmdzLCA0ID0gSW5mbywgNSA9IERlYnVnLCA2ID0gVmVyYm9zZVxuICAgKlxuICAgKiBUaGUgaGlnaGVyIHRoZSB2YWx1ZSB0aGUgbW9yZSBpbmZvcm1hdGlvbiBpcyBzaG93bi5cbiAgICpcbiAgICogQHBhcmFtIHtsb2dsZXZlbH0gY29udGFpbnMgdHdvIHByb3BlcnRpZXM6IGxvZ0xldmVsIChmb3IgY29uc29sZSBsb2dnaW5nKSBhbmQgdmlzdWFsTGV2ZWwgKGZvciBkaWFsb2cgbWVzc2FnZXMpXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0TG9nTGV2ZWwobG9nTGV2ZWw6IHsgbG9nTGV2ZWw6IG51bWJlcjsgdmlzdWFsTGV2ZWw6IG51bWJlciB9KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIG9yIGVuYWJsZSBsb2NhdGlvbiBjb2xsZWN0aW9uIChEZWZhdWx0cyB0byBlbmFibGVkKSBpZiB5b3VyIGFwcCBoYXMgbG9jYXRpb24gcGVybWlzc2lvbi5cbiAgICogQHBhcmFtIHNoYXJlZCB7Ym9vbGVhbn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRMb2NhdGlvblNoYXJlZChzaGFyZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gd2lsbCBiZSBmaXJlZCB3aGVuIGEgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gc2V0dGluZyBjaGFuZ2VzLlxuICAgKiBUaGlzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIE5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHByb21wdCBzaG93blxuICAgKiAtIFRoZSB1c2VyIGFjY2VwdGluZyBvciBkZWNsaW5pbmcgdGhlIHBlcm1pc3Npb24gcHJvbXB0XG4gICAqIC0gRW5hYmxpbmcvZGlzYWJsaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHlvdXIgYXBwIGluIHRoZSBkZXZpY2UgU2V0dGluZ3MgYWZ0ZXIgcmV0dXJuaW5nIHRvIHlvdXIgYXBwLlxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgYWRkUGVybWlzc2lvbk9ic2VydmVyKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gd2lsbCBiZSBmaXJlZCB3aGVuIGEgbm90aWZpY2F0aW9uIHN1YnNjcmlwdGlvbiBwcm9wZXJ0eSBjaGFuZ2VzLlxuICAgKiBUaGlzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIEdldHRpbmcgYSBwdXNoIHRva2VuIGZyb20gQXBwbGUgLyBHb29nbGUuXG4gICAqIC0gR2V0dGluZyBhIHBsYXllciAvIHVzZXIgaWQgZnJvbSBPbmVTaWduYWxcbiAgICogLSBPbmVTaWduYWwuc2V0U3Vic2NyaXB0aW9uIGlzIGNhbGxlZFxuICAgKiAtIFVzZXIgZGlzYWJsZXMgb3IgZW5hYmxlcyBub3RpZmljYXRpb25zXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBhZGRTdWJzY3JpcHRpb25PYnNlcnZlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIE9uZVNpZ25hbCBub3RpZmljYXRpb25zXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEVtYWlsKGVtYWlsOiBzdHJpbmcsIGVtYWlsQXV0aFRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSWYgeW91ciBhcHAgaW1wbGVtZW50cyBsb2dvdXQgZnVuY3Rpb25hbGl0eSwgeW91IGNhbiBjYWxsIGxvZ291dEVtYWlsIHRvIGRpc3NvY2lhdGUgdGhlIGVtYWlsIGZyb20gdGhlIGRldmljZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBsb2dvdXRFbWFpbCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGFzc2VkIGluIGZ1bmN0aW9uIHdpbGwgYmUgZmlyZWQgd2hlbiBhIG5vdGlmaWNhdGlvbiBzdWJzY3JpcHRpb24gcHJvcGVydHkgY2hhbmdlcy5cbiAgICogVGhpcyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGV2ZW50czpcbiAgICogLSBHZXR0aW5nIGEgcHVzaCB0b2tlbiBmcm9tIEFwcGxlIC8gR29vZ2xlLlxuICAgKiAtIEdldHRpbmcgYSBwbGF5ZXIgLyB1c2VyIGlkIGZyb20gT25lU2lnbmFsXG4gICAqIC0gT25lU2lnbmFsLnNldFN1YnNjcmlwdGlvbiBpcyBjYWxsZWRcbiAgICogLSBVc2VyIGRpc2FibGVzIG9yIGVuYWJsZXMgbm90aWZpY2F0aW9uc1xuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgYWRkRW1haWxTdWJzY3JpcHRpb25PYnNlcnZlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIE9uZVNpZ25hbCBub3RpZmljYXRpb25zXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgY2xlYXJPbmVTaWduYWxOb3RpZmljYXRpb25zKCk6IHZvaWQge31cblxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byBkZWxheSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFNESyB1bnRpbCB0aGUgdXNlciBwcm92aWRlcyBwcml2YWN5IGNvbnNlbnQuXG4gICAqIFRoZSBTREsgd2lsbCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQgdW50aWwgdGhlIHByb3ZpZGVVc2VyQ29uc2VudCh0cnVlKSBtZXRob2QgaXMgY2FsbGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlcXVpcmVkXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFJlcXVpcmVzVXNlclByaXZhY3lDb25zZW50KHJlcXVpcmVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBJZiB5b3VyIGFwcGxpY2F0aW9uIGlzIHNldCB0byByZXF1aXJlIHRoZSB1c2VyJ3MgcHJpdmFjeSBjb25zZW50LCB5b3UgY2FuIHByb3ZpZGUgdGhpcyBjb25zZW50IHVzaW5nIHRoaXMgbWV0aG9kLlxuICAgKiBVbnRpbCB5b3UgY2FsbCBwcm92aWRlVXNlckNvbnNlbnQodHJ1ZSksIHRoZSBTREsgd2lsbCBub3QgZnVsbHkgaW5pdGlhbGl6ZSBhbmQgd2lsbCBub3Qgc2VuZCBhbnkgZGF0YSB0byBPbmVTaWduYWwuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ3JhbnRlZFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBwcm92aWRlVXNlckNvbnNlbnQoZ3JhbnRlZDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGNhbGxiYWNrLCB3aGljaCByZXR1cm5zIGEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIGlmIHRoZSB1c2VyIGhhcyBnaXZlbiBwcml2YWN5IGNvbnNlbnQgeWV0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICAgKi9cbiAgQENvcmRvdmEoKVxuICB1c2VyUHJvdmlkZWRQcml2YWN5Q29uc2VudChjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gdXNlIHlvdXIgb3duIHN5c3RlbSdzIHVzZXIgSUQncyB0byBzZW5kIHB1c2ggbm90aWZpY2F0aW9ucyB0byB5b3VyIHVzZXJzLlxuICAgKiBUbyB0aWUgYSB1c2VyIHRvIGEgZ2l2ZW4gdXNlciBJRCwgeW91IGNhbiB1c2UgdGhpcyBtZXRob2QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRlcm5hbElkXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEV4dGVybmFsVXNlcklkKGV4dGVybmFsSWQ6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlcyB3aGF0ZXZlciB3YXMgc2V0IGFzIHRoZSBjdXJyZW50IHVzZXIncyBleHRlcm5hbCB1c2VyIElELlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICByZW1vdmVFeHRlcm5hbFVzZXJJZCgpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRyaWdnZXIuIE1heSBzaG93IGFuIEluLUFwcCBNZXNzYWdlIGlmIGl0cyB0cmlnZ2VyIGNvbmRpdGlvbnMgd2VyZSBtZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGZvciB0aGUgdHJpZ2dlci5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBPYmplY3R9IHZhbHVlIFZhbHVlIGZvciB0aGUgdHJpZ2dlci4gU3RyaW5nIG9yIG51bWJlciByZWNvbW1lbmRlZC4gT2JqZWN0IHBhc3NlZCBpbiB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZy5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBhZGRUcmlnZ2VyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBBZGQgYSBtYXAgb2YgdHJpZ2dlcnMuIE1heSBzaG93IGFuIEluLUFwcCBNZXNzYWdlIGlmIGl0cyB0cmlnZ2VyIGNvbmRpdGlvbnMgd2VyZSBtZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IE9iamVjdD59IHRyaWdnZXJzIEFsbG93cyB5b3UgdG8gc2V0IG11bHRpcGxlIHRyaWdnZXIga2V5L3ZhbHVlIHBhaXJzIHNpbXVsdGFuZW91c2x5LiBQYXNzIGEganNvbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgbGlrZTogYHtcImtleVwiOiBcInZhbHVlXCIsIFwia2V5MlwiOiBcInZhbHVlMlwifWAuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgYWRkVHJpZ2dlcnModHJpZ2dlcnM6IE9iamVjdCk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNpbmdsZSB0cmlnZ2VyIGZvciB0aGUgZ2l2ZW4ga2V5LiBNYXkgc2hvdyBhbiBJbi1BcHAgTWVzc2FnZSBpZiBpdHMgdHJpZ2dlciBjb25kaXRpb25zIHdlcmUgbWV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEtleSBmb3IgdHJpZ2dlciB0byByZW1vdmUuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgcmVtb3ZlVHJpZ2dlckZvcktleShrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGxpc3Qgb2YgdHJpZ2dlcnMgYmFzZWQgb24gYSBjb2xsZWN0aW9uIChhcnJheSkgb2Yga2V5cy4gTWF5IHNob3cgYW4gSW4tQXBwIE1lc3NhZ2UgaWYgaXRzIHRyaWdnZXIgY29uZGl0aW9ucyB3ZXJlIG1ldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0ga2V5cyBSZW1vdmVzIGEgY29sbGVjdGlvbiBvZiB0cmlnZ2VycyBmcm9tIHRoZWlyIGtleXMuIFBhc3MgYW4gYXJyYXkgb2YgdHJpZ2dlciBrZXlzIGxpa2U6IGBbXCJrZXkxXCIsIFwia2V5MlwiLCBcImtleTNcIl1gLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIHJlbW92ZVRyaWdnZXJzRm9yS2V5cyhrZXlzOiBzdHJpbmdbXSk6IHZvaWQge31cblxuICAvKipcbiAgICogR2V0cyBhIHRyaWdnZXIgdmFsdWUgZm9yIGEgcHJvdmlkZWQgdHJpZ2dlciBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGZvciB0cmlnZ2VyIHRvIGdldCB2YWx1ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0Pn0gUmV0dXJuIHZhbHVlIHNldCB3aXRoIGBhZGRUcmlnZ2VyYCwgb3IgYG51bGxgL2BuaWxgIChpT1MpIGlmIG5ldmVyIHNldCBvciByZW1vdmVkLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRUcmlnZ2VyVmFsdWVGb3JLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IE9iamVjdD4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIHRlbXBvcmFyaWx5IHBhdXNlIGFsbCBJbi1BcHAgTWVzc2FnZXMuIFlvdSBtYXkgd2FudCB0byBkbyB0aGlzIHdoaWxlIHRoZSB1c2VyIGlzIGVuZ2FnZWQgaW4gYW4gYWN0aXZpdHkgdGhhdCB5b3UgZG9uJ3Qgd2FudCBhIG1lc3NhZ2UgdG8gaW50ZXJydXB0IChzdWNoIGFzIHdhdGNoaW5nIGEgdmlkZW8pLlxuICAgKiBBbiBJbi1BcHAgTWVzc2FnZSB0aGF0IHdvdWxkIGRpc3BsYXkgaWYgbm90IHBhdXNlZCB3aWxsIGRpc3BsYXkgcmlnaHQgYWZ0ZXIgcmVzdW1lIGlmIGl0cyBjb25kaXRpb25zIHRvIGRpc3BsYXkgcmVtYWlucyBzYXRpc2ZpZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcGF1c2UgVG8gcGF1c2UsIHNldCBgdHJ1ZWAuIFRvIHJlc3VtZSwgc2V0IGBmYWxzZWAuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgcGF1c2VJbkFwcE1lc3NhZ2VzKHBhdXNlOiBib29sZWFuKTogdm9pZCB7fVxufVxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvb25lc2lnbmFsL25neC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLHVDQUErQyxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUEwRmxDOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksc0JBYVg7QUFiRCxXQUFZLHNCQUFzQjtJQUNoQzs7T0FFRztJQUNILHVFQUFVLENBQUE7SUFDVjs7T0FFRztJQUNILHlFQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHdFQUFXLENBQUE7QUFDYixDQUFDLEVBYlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQWFqQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFhWDtBQWJELFdBQVksYUFBYTtJQUN2Qjs7T0FFRztJQUNILGlEQUFRLENBQUE7SUFDUjs7T0FFRztJQUNILDZEQUFjLENBQUE7SUFDZDs7T0FFRztJQUNILGlFQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFiVyxhQUFhLEtBQWIsYUFBYSxRQWF4QjtBQThLRCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLG1EQUFVLENBQUE7SUFDViwyREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2Qjs7SUF1SThCLDZCQUEwQjs7O1FBQ3ZEOzs7O1dBSUc7UUFDSCw0QkFBc0IsR0FBRztZQUN2QixJQUFJLEVBQUUsQ0FBQztZQUNQLFVBQVUsRUFBRSxDQUFDO1lBQ2IsWUFBWSxFQUFFLENBQUM7U0FDaEIsQ0FBQzs7O0lBVUYsNkJBQVMsYUFBQyxLQUFhLEVBQUUsbUJBQTRCO0lBWXJELDhDQUEwQjtJQWMxQiw0Q0FBd0I7SUFZeEIsNkNBQXlCO0lBcUJ6QiwrQkFBVyxhQUFDLFFBQXNGO0lBVWxHLDJCQUFPO0lBWVAsOERBQTBDO0lBWTFDLDJCQUFPO0lBZVAsMEJBQU07SUFjTiwyQkFBTyxhQUFDLEdBQVcsRUFBRSxLQUFhO0lBVWxDLDRCQUFRLGFBQUMsSUFBUztJQVNsQiw2QkFBUyxhQUFDLEdBQVc7SUFTckIsOEJBQVUsYUFBQyxJQUFjO0lBT3pCLGdEQUE0QjtJQWE1QixpQ0FBYSxhQUFDLE1BQWU7SUFhN0IsK0JBQVcsYUFBQyxNQUFlO0lBVTNCLHFDQUFpQixhQUFDLGFBQTRCO0lBVzlDLG1DQUFlLGFBQUMsTUFBZTtJQVEvQixrREFBOEI7SUFXOUIsb0NBQWdCLGFBQUMsZUFBK0I7SUFVaEQsc0NBQWtCLGFBQUMsY0FBc0I7SUFNekMsa0NBQWM7SUFPZCxtQ0FBZSxhQUFDLEtBQWE7SUFjN0IsK0JBQVcsYUFBQyxRQUFtRDtJQVEvRCxxQ0FBaUIsYUFBQyxNQUFlO0lBY2pDLHlDQUFxQjtJQWlCckIsMkNBQXVCO0lBV3ZCLDRCQUFRLGFBQUMsS0FBYSxFQUFFLGNBQXVCO0lBUS9DLCtCQUFXO0lBaUJYLGdEQUE0QjtJQVE1QiwrQ0FBMkI7SUFTM0IsaURBQTZCLGFBQUMsUUFBaUI7SUFTL0Msc0NBQWtCLGFBQUMsT0FBZ0I7SUFRbkMsOENBQTBCLGFBQUMsUUFBa0I7SUFTN0MscUNBQWlCLGFBQUMsVUFBa0I7SUFNcEMsd0NBQW9CO0lBV3BCLDhCQUFVLGFBQUMsR0FBVyxFQUFFLEtBQStCO0lBVXZELCtCQUFXLGFBQUMsUUFBZ0I7SUFVNUIsdUNBQW1CLGFBQUMsR0FBVztJQVUvQix5Q0FBcUIsYUFBQyxJQUFjO0lBU3BDLHlDQUFxQixhQUFDLEdBQVc7SUFhakMsc0NBQWtCLGFBQUMsS0FBYzs7Ozs7OztnQkFwZGxDLFVBQVU7O29CQXJiWDtFQXNiK0IsMEJBQTBCO1NBQTVDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3Jkb3ZhLCBBd2Vzb21lQ29yZG92YU5hdGl2ZVBsdWdpbiwgUGx1Z2luIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9TTm90aWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIFdhcyBhcHAgaW4gZm9jdXMuXG4gICAqL1xuICBpc0FwcEluRm9jdXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2FzIG5vdGlmaWNhdGlvbiBzaG93biB0byB0aGUgdXNlci4gV2lsbCBiZSBmYWxzZSBmb3Igc2lsZW50IG5vdGlmaWNhdGlvbnMuXG4gICAqL1xuICBzaG93bj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBBbmRyb2lkIE5vdGlmaWNhdGlvbiBhc3NpZ25lZCB0byB0aGUgbm90aWZpY2F0aW9uLiBDYW4gYmUgdXNlZCB0byBjYW5jZWwgb3IgcmVwbGFjZSB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgYW5kcm9pZE5vdGlmaWNhdGlvbklkPzogbnVtYmVyO1xuICAvKipcbiAgICogUGF5bG9hZCByZWNlaXZlZCBmcm9tIE9uZVNpZ25hbC5cbiAgICovXG4gIHBheWxvYWQ/OiBPU05vdGlmaWNhdGlvblBheWxvYWQ7XG4gIC8qKlxuICAgKiBIb3cgdGhlIG5vdGlmaWNhdGlvbiB3YXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBDYW4gYmUgc2V0IHRvIGBOb3RpZmljYXRpb25gLCBgSW5BcHBBbGVydGAsIG9yIGBOb25lYCBpZiBpdCB3YXMgbm90IGRpc3BsYXllZC5cbiAgICovXG4gIGRpc3BsYXlUeXBlPzogT1NEaXNwbGF5VHlwZTtcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIE5vdGlmaWNhdGlvbiBpcyBhIHN1bW1hcnkgbm90aWZpY2F0aW9uIGZvciBhIGdyb3VwIHRoaXMgd2lsbCBjb250YWluIGFsbCBub3RpZmljYXRpb24gcGF5bG9hZHMgaXQgd2FzIGNyZWF0ZWQgZnJvbS5cbiAgICovXG4gIGdyb3VwZWROb3RpZmljYXRpb25zPzogT1NOb3RpZmljYXRpb25QYXlsb2FkW107XG4gIGFwcF9pZD86IHN0cmluZztcbiAgY29udGVudHM/OiBhbnk7XG4gIGhlYWRpbmdzPzogYW55O1xuICBpc0lvcz86IGJvb2xlYW47XG4gIGlzQW5kcm9pZD86IGJvb2xlYW47XG4gIGlzV1A/OiBib29sZWFuO1xuICBpc1dQX1dOUz86IGJvb2xlYW47XG4gIGlzQWRtPzogYm9vbGVhbjtcbiAgaXNDaHJvbWU/OiBib29sZWFuO1xuICBpc0Nocm9tZVdlYj86IGJvb2xlYW47XG4gIGlzU2FmYXJpPzogYm9vbGVhbjtcbiAgaXNBbnlXZWI/OiBib29sZWFuO1xuICBpbmNsdWRlZF9zZWdtZW50cz86IHN0cmluZ1tdO1xuICBleGNsdWRlZF9zZWdtZW50cz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX3BsYXllcl9pZHM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9pb3NfdG9rZW5zPzogc3RyaW5nW107XG4gIGluY2x1ZGVfYW5kcm9pZF9yZWdfaWRzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfd3BfdXJpcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX3dwX3duc191cmlzPzogc3RyaW5nW107XG4gIGluY2x1ZGVfYW1hem9uX3JlZ19pZHM/OiBzdHJpbmdbXTtcbiAgaW5jbHVkZV9jaHJvbWVfcmVnX2lkcz86IHN0cmluZ1tdO1xuICBpbmNsdWRlX2Nocm9tZV93ZWJfcmVnX2lkcz86IHN0cmluZ1tdO1xuICBhcHBfaWRzPzogc3RyaW5nW107XG4gIHRhZ3M/OiBhbnlbXTtcbiAgaW9zX2JhZGdlVHlwZT86IHN0cmluZztcbiAgaW9zX2JhZGdlQ291bnQ/OiBudW1iZXI7XG4gIGlvc19zb3VuZD86IHN0cmluZztcbiAgYW5kcm9pZF9zb3VuZD86IHN0cmluZztcbiAgYWRtX3NvdW5kPzogc3RyaW5nO1xuICB3cF9zb3VuZD86IHN0cmluZztcbiAgd3Bfd25zX3NvdW5kPzogc3RyaW5nO1xuICBkYXRhPzogYW55O1xuICBidXR0b25zPzogYW55O1xuICBjb2xsYXBzZV9pZD86IHN0cmluZztcbiAgc21hbGxfaWNvbj86IHN0cmluZztcbiAgbGFyZ2VfaWNvbj86IHN0cmluZztcbiAgYmlnX3BpY3R1cmU/OiBzdHJpbmc7XG4gIGFkbV9zbWFsbF9pY29uPzogc3RyaW5nO1xuICBhZG1fbGFyZ2VfaWNvbj86IHN0cmluZztcbiAgYWRtX2JpZ19waWN0dXJlPzogc3RyaW5nO1xuICBjaHJvbWVfaWNvbj86IHN0cmluZztcbiAgY2hyb21lX2JpZ19waWN0dXJlPzogc3RyaW5nO1xuICBjaHJvbWVfd2ViX2ljb24/OiBzdHJpbmc7XG4gIGZpcmVmb3hfaWNvbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICBzZW5kX2FmdGVyPzogc3RyaW5nO1xuICBkZWxheWVkX29wdGlvbj86IHN0cmluZztcbiAgZGVsaXZlcnlfdGltZV9vZl9kYXk/OiBzdHJpbmc7XG4gIGFuZHJvaWRfbGVkX2NvbG9yPzogc3RyaW5nO1xuICBhbmRyb2lkX2FjY2VudF9jb2xvcj86IHN0cmluZztcbiAgYW5kcm9pZF92aXNpYmlsaXR5PzogbnVtYmVyO1xuICBjb250ZW50X2F2YWlsYWJsZT86IGJvb2xlYW47XG4gIGFtYXpvbl9iYWNrZ3JvdW5kX2RhdGE/OiBib29sZWFuO1xuICB0ZW1wbGF0ZV9pZD86IHN0cmluZztcbiAgYW5kcm9pZF9ncm91cD86IHN0cmluZztcbiAgYW5kcm9pZF9ncm91cF9tZXNzYWdlPzogYW55O1xuICBhZG1fZ3JvdXA/OiBzdHJpbmc7XG4gIGFkbV9ncm91cF9tZXNzYWdlPzogYW55O1xuICB0dGw/OiBudW1iZXI7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICBpb3NfY2F0ZWdvcnk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQU5EUk9JRCoqIC0gUHJpdmFjeSBzZXR0aW5nIGZvciBob3cgdGhlIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2hvd24gb24gdGhlIGxvY2tzY3JlZW4gb2YgQW5kcm9pZCA1KyBkZXZpY2VzLlxuICovXG5leHBvcnQgZW51bSBPU0xvY2tTY3JlZW5WaXNpYmlsaXR5IHtcbiAgLyoqXG4gICAqIEZ1bGx5IHZpc2libGUgKGRlZmF1bHQpXG4gICAqL1xuICBQdWJsaWMgPSAxLFxuICAvKipcbiAgICogQ29udGVudHMgYXJlIGhpZGRlblxuICAgKi9cbiAgUHJpdmF0ZSA9IDAsXG4gIC8qKlxuICAgKiBOb3Qgc2hvd25cbiAgICovXG4gIFNlY3JldCA9IC0xLFxufVxuXG4vKipcbiAqIEhvdyB0aGUgbm90aWZpY2F0aW9uIHdhcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIFBhcnQgb2YgT1NOb3RpZmljYXRpb24uIFNlZSBpbkZvY3VzRGlzcGxheWluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyBpcyB1c2VkLlxuICovXG5leHBvcnQgZW51bSBPU0Rpc3BsYXlUeXBlIHtcbiAgLyoqXG4gICAqIG5vdGlmaWNhdGlvbiBpcyBzaWxlbnQsIG9yIGluRm9jdXNEaXNwbGF5aW5nIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgTm9uZSA9IDAsXG4gIC8qKlxuICAgKiAoKipERUZBVUxUKiopIC0gbmF0aXZlIGFsZXJ0IGRpYWxvZyBkaXNwbGF5LlxuICAgKi9cbiAgSW5BcHBBbGVydCA9IDEsXG4gIC8qKlxuICAgKiBuYXRpdmUgbm90aWZpY2F0aW9uIGRpc3BsYXkuXG4gICAqL1xuICBOb3RpZmljYXRpb24gPSAyLFxufVxuXG4vKipcbiAqIENvbnRlbnRzIGFuZCBzZXR0aW5ncyBvZiB0aGUgbm90aWZpY2F0aW9uIHRoZSB1c2VyIHJlY2VpdmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TTm90aWZpY2F0aW9uUGF5bG9hZCB7XG4gIC8qKlxuICAgKiBPbmVTaWduYWwgbm90aWZpY2F0aW9uIFVVSUQuXG4gICAqL1xuICBub3RpZmljYXRpb25JRDogc3RyaW5nO1xuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCb2R5IG9mIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBib2R5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gYWRkaXRpb25hbCBkYXRhIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgbm90aWZpY2F0aW9uLiBTZXQgb24gdGhlIGRhc2hib2FyZCB1bmRlciBPcHRpb25zID4gQWRkaXRpb25hbCBEYXRhXG4gICAqIG9yIHdpdGggdGhlICdkYXRhJyBmaWVsZCBvbiB0aGUgUkVTVCBBUEkuXG4gICAqL1xuICBhZGRpdGlvbmFsRGF0YT86IGFueTtcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIFNtYWxsIGljb24gcmVzb3VyY2UgbmFtZSBzZXQgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHNtYWxsSWNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIExhcmdlIGljb24gc2V0IG9uIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICBsYXJnZUljb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBCaWcgcGljdHVyZSBpbWFnZSBzZXQgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGJpZ1BpY3R1cmU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBBY2NlbnQgY29sb3Igc2hvd24gYXJvdW5kIHNtYWxsIG5vdGlmaWNhdGlvbiBpY29uIG9uIEFuZHJvaWQgNSsgZGV2aWNlcy4gQVJHQiBmb3JtYXQuXG4gICAqL1xuICBzbWFsbEljb25BY2NlbnRDb2xvcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCB0byBvcGVuIHdoZW4gb3BlbmluZyB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgbGF1bmNoVVJMPzogc3RyaW5nO1xuICAvKipcbiAgICogU291bmQgcmVzb3VyY2UgdG8gcGxheSB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgc2hvd24uXG4gICAqL1xuICBzb3VuZDogc3RyaW5nO1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gRGV2aWNlcyB0aGF0IGhhdmUgYSBub3RpZmljYXRpb24gTEVEIHdpbGwgYmxpbmsgaW4gdGhpcyBjb2xvci4gQVJHQiBmb3JtYXQuXG4gICAqL1xuICBsZWRDb2xvcj86IHN0cmluZztcbiAgbG9ja1NjcmVlblZpc2liaWxpdHk/OiBPU0xvY2tTY3JlZW5WaXNpYmlsaXR5O1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gTm90aWZpY2F0aW9ucyB3aXRoIHRoaXMgc2FtZSBrZXkgd2lsbCBiZSBncm91cGVkIHRvZ2V0aGVyIGFzIGEgc2luZ2xlIHN1bW1hcnkgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgZ3JvdXBLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBTdW1tYXJ5IHRleHQgZGlzcGxheWVkIGluIHRoZSBzdW1tYXJ5IG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGdyb3VwTWVzc2FnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgYWN0aW9uIGJ1dHRvbnMgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIGFjdGlvbkJ1dHRvbnM6IE9TQWN0aW9uQnV0dG9uW107XG4gIC8qKlxuICAgKiBBTkRST0lEKiogLSBUaGUgR29vZ2xlIHByb2plY3QgbnVtYmVyIHRoZSBub3RpZmljYXRpb24gd2FzIHNlbnQgdW5kZXIuXG4gICAqL1xuICBmcm9tUHJvamVjdE51bWJlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFORFJPSUQqKiAtIElmIGEgYmFja2dyb3VuZCBpbWFnZSB3YXMgc2V0IHRoaXMgb2JqZWN0IHdpbGwgYmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgYmFja2dyb3VuZEltYWdlTGF5b3V0PzogT1NCYWNrZ3JvdW5kSW1hZ2VMYXlvdXQ7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogTGlzdCBvZiBhY3Rpb24gYnV0dG9ucyBvbiB0aGUgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcmF3UGF5bG9hZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIExpc3Qgb2YgYWN0aW9uIGJ1dHRvbnMgb24gdGhlIG5vdGlmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU0FjdGlvbkJ1dHRvbiB7XG4gIC8qKlxuICAgKiBJZCBhc3NpZ25lZCB0byB0aGUgYnV0dG9uLlxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRleHQgc2hvdyBvbiB0aGUgYnV0dG9uIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKipcbiAgICogQU5EUk9JRCoqIC0gSWNvbiBzaG93biBvbiB0aGUgYnV0dG9uLlxuICAgKi9cbiAgaWNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9TUGVybWlzc2lvblN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NQZXJtaXNzaW9uU3RhdGUge1xuICAvKipcbiAgICogVXNlciB3YXMgcHJvbXB0ZWQuXG4gICAqL1xuICBoYXNQcm9tcHRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBlcm1pc3Npb25zIFN0YXR1cyAoaU9TIE9ubHkpXG4gICAqL1xuICBzdGF0dXM6IGFueTtcbiAgLyoqXG4gICAqIFBlcm1pc3Npb25zIFN0YXRlIChBbmRyb2lkIE9ubHkpXG4gICAqL1xuICBzdGF0ZTogYW55O1xufVxuXG4vKipcbiAqIE9TU3Vic2NyaXB0aW9uU3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU1N1YnNjcmlwdGlvblN0YXRlIHtcbiAgc3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgdXNlclN1YnNjcmlwdGlvblNldHRpbmc6IGFueTtcbiAgdXNlcklkOiBhbnk7XG4gIHB1c2hUb2tlbjogYW55O1xufVxuXG4vKipcbiAqIFN1YnNjcmlwdGlvbiBhbmQgcGVybWlzc2lvbnMgc3RhdHVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT1NQZXJtaXNzaW9uU3Vic2NyaXB0aW9uU3RhdGUge1xuICAvKipcbiAgICogSWQgYXNzaWduZWQgdG8gdGhlIGJ1dHRvbi5cbiAgICovXG4gIHBlcm1pc3Npb25TdGF0dXM6IE9TUGVybWlzc2lvblN0YXRlO1xuICAvKipcbiAgICogVGV4dCBzaG93IG9uIHRoZSBidXR0b24gdG8gdGhlIHVzZXIuXG4gICAqL1xuICBzdWJzY3JpcHRpb25TdGF0dXM6IE9TU3Vic2NyaXB0aW9uU3RhdGU7XG59XG5cbi8qKlxuICogQU5EUk9JRCoqIC0gSWYgYSBiYWNrZ3JvdW5kIGltYWdlIHdhcyBzZXQsIHRoaXMgb2JqZWN0IHdpbGwgYmUgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9TQmFja2dyb3VuZEltYWdlTGF5b3V0IHtcbiAgLyoqXG4gICAqIEltYWdlIFVSTCBvciBuYW1lIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4gICAqL1xuICBpbWFnZTogc3RyaW5nO1xuICAvKipcbiAgICogVGV4dCBjb2xvciBvZiB0aGUgdGl0bGUgb24gdGhlIG5vdGlmaWNhdGlvbi4gQVJHQiBGb3JtYXQuXG4gICAqL1xuICB0aXRsZVRleHRDb2xvcjogc3RyaW5nO1xuICAvKipcbiAgICogVGV4dCBjb2xvciBvZiB0aGUgYm9keSBvbiB0aGUgbm90aWZpY2F0aW9uLiBBUkdCIEZvcm1hdC5cbiAgICovXG4gIGJvZHlUZXh0Q29sb3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBhIG5vdGlmaWNhdGlvbiB0aGUgdXNlciByZWNlaXZlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU05vdGlmaWNhdGlvbk9wZW5lZFJlc3VsdCB7XG4gIGFjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIFdhcyB0aGUgbm90aWZpY2F0aW9uIG9wZW5lZCBub3JtYWxseSAoYE9wZW5lZGApIG9yIHdhcyBhIGJ1dHRvbiBwcmVzc2VkIG9uIHRoZSBub3RpZmljYXRpb24gKGBBY3Rpb25UYWtlbmApLlxuICAgICAqL1xuICAgIHR5cGU6IE9TQWN0aW9uVHlwZTtcbiAgICAvKipcbiAgICAgKiBJZiBgdHlwZWAgPT0gYEFjdGlvblRha2VuYCB0aGVuIHRoaXMgd2lsbCBjb250YWluIHRoZSBpZCBvZiB0aGUgYnV0dG9uIHByZXNzZWQuXG4gICAgICovXG4gICAgYWN0aW9uSUQ/OiBzdHJpbmc7XG4gIH07XG4gIG5vdGlmaWNhdGlvbjogT1NOb3RpZmljYXRpb247XG59XG5cbmV4cG9ydCBlbnVtIE9TQWN0aW9uVHlwZSB7XG4gIE9wZW5lZCA9IDAsXG4gIEFjdGlvblRha2UgPSAxLFxufVxuXG4vKipcbiAqIERldGFpbHMgYWJvdXQgdGhlIEluLUFwcCBNZXNzYWdlIGFjdGlvbiBlbGVtZW50IChidXR0b24gb3IgaW1hZ2UpIHRoYXQgd2FzIHRhcHBlZCBvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPU0luQXBwTWVzc2FnZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBjbGljayBuYW1lIGRlZmluZWQgZm9yIHRoZSBhY3Rpb24gZWxlbWVudC4gbnVsbCBvciBuaWwgKGlPUykgaWYgbm90IHNldC5cbiAgICovXG4gIGNsaWNrX25hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIFVSTCB0aGF0IG9wZW5zIHdoZW4gdGhlIGFjdGlvbiB0YWtlcyBwbGFjZS4gbnVsbCBvciBuaWwgKGlPUykgaWYgbm90IHNldC5cbiAgICovXG4gIGNsaWNrX3VybDogc3RyaW5nO1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhlIHVzZXIgaGFzIHByZXNzZWQgYW55IGFjdGlvbiBvbiB0aGUgSW4tQXBwIE1lc3NhZ2UuXG4gICAqL1xuICBmaXJzdF9jbGljazogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIEluLUFwcCBNZXNzYWdlIHdpbGwgYW5pbWF0ZSBvZmYgdGhlIHNjcmVlbi4gSWYgYGZhbHNlYCwgdGhlIEluLUFwcCBNZXNzYWdlIHdpbGwgc3RheSBvbiBzY3JlZW4gdW50aWwgdGhlIHVzZXIgZGlzbWlzc2VzIGl0LlxuICAgKi9cbiAgY2xvc2VzX21lc3NhZ2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQG5hbWUgT25lU2lnbmFsXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBPbmVTaWduYWwgcGx1Z2luIGlzIGFuIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBmb3IgdXNpbmcgdGhlIFtPbmVTaWduYWxdKGh0dHBzOi8vb25lc2lnbmFsLmNvbS8pIFNlcnZpY2UuXG4gKiBPbmVTaWduYWwgaXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGRlbGl2ZXJpbmcgcHVzaCBub3RpZmljYXRpb25zLlxuICpcbiAqIFBsZWFzZSB2aWV3IHRoZSBvZmZpY2lhbCBbT25lU2lnbmFsIElvbmljIFNESyBJbnN0YWxsYXRpb25dKGh0dHBzOi8vZG9jdW1lbnRhdGlvbi5vbmVzaWduYWwuY29tL2RvY3MvaW9uaWMtc2RrLXNldHVwKSBndWlkZVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogIyMjIyBJY29uc1xuICogSWYgeW91IHdhbnQgdG8gdXNlIGdlbmVyYXRlZCBpY29ucyB3aXRoIGNvbW1hbmQgYGlvbmljIGNvcmRvdmEgcmVzb3VyY2VzYDpcbiAqXG4gKiAxLiBBZGQgYSBmaWxlIHRvIHlvdXIgYGhvb2tzYCBkaXJlY3RvcnkgY2FsbGVkIGBjb3B5X2FuZHJvaWRfbm90aWZpY2F0aW9uX2ljb25zLmpzYFxuICpcbiAqIDIuIENvbmZpZ3VyZSB0aGUgaG9vayBpbiB5b3VyIGNvbmZpZy54bWxcbiAqIGBgYFxuICogICAgIDxwbGF0Zm9ybSBuYW1lPVwiYW5kcm9pZFwiPlxuICogICAgICAgICA8aG9vayB0eXBlPVwiYWZ0ZXJfcHJlcGFyZVwiIHNyYz1cImhvb2tzL2NvcHlfYW5kcm9pZF9ub3RpZmljYXRpb25faWNvbnMuanNcIiAvPlxuICogICAgIDwvcGxhdGZvcm0+XG4gKiBgYGBcbiAqXG4gKiAzLiBQdXQgdGhlIGZvbGxvd2luZyBjb2RlIGluIGl0OlxuICpcbiAqIGBgYFxuICogIyEvdXNyL2Jpbi9lbnYgbm9kZVxuICpcbiAqIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gKiB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAqXG4gKiB2YXIgZmlsZXN0b2NvcHkgPSBbe1xuICogICAgIFwicmVzb3VyY2VzL2FuZHJvaWQvaWNvbi9kcmF3YWJsZS1oZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUtbWRwaS1pY29uLnBuZ1wiOlxuICogICAgICAgICBcInBsYXRmb3Jtcy9hbmRyb2lkL2FwcC9zcmMvbWFpbi9yZXMvZHJhd2FibGUtbWRwaS9pY19zdGF0X29uZXNpZ25hbF9kZWZhdWx0LnBuZ1wiXG4gKiB9LCB7XG4gKiAgICAgXCJyZXNvdXJjZXMvYW5kcm9pZC9pY29uL2RyYXdhYmxlLXhoZHBpLWljb24ucG5nXCI6XG4gKiAgICAgICAgIFwicGxhdGZvcm1zL2FuZHJvaWQvYXBwL3NyYy9tYWluL3Jlcy9kcmF3YWJsZS14aGRwaS9pY19zdGF0X29uZXNpZ25hbF9kZWZhdWx0LnBuZ1wiXG4gKiB9LCB7XG4gKiAgICAgXCJyZXNvdXJjZXMvYW5kcm9pZC9pY29uL2RyYXdhYmxlLXh4aGRwaS1pY29uLnBuZ1wiOlxuICogICAgICAgICBcInBsYXRmb3Jtcy9hbmRyb2lkL2FwcC9zcmMvbWFpbi9yZXMvZHJhd2FibGUteHhoZHBpL2ljX3N0YXRfb25lc2lnbmFsX2RlZmF1bHQucG5nXCJcbiAqIH0sIHtcbiAqICAgICBcInJlc291cmNlcy9hbmRyb2lkL2ljb24vZHJhd2FibGUteHh4aGRwaS1pY29uLnBuZ1wiOlxuICogICAgICAgICBcInBsYXRmb3Jtcy9hbmRyb2lkL2FwcC9zcmMvbWFpbi9yZXMvZHJhd2FibGUteHh4aGRwaS9pY19zdGF0X29uZXNpZ25hbF9kZWZhdWx0LnBuZ1wiXG4gKiB9IF07XG4gKlxuICogbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihjb250ZXh0KSB7XG4gKlxuICogICAgIC8vIG5vIG5lZWQgdG8gY29uZmlndXJlIGJlbG93XG4gKiAgICAgdmFyIHJvb3RkaXIgPSBjb250ZXh0Lm9wdHMucHJvamVjdFJvb3Q7XG4gKlxuICogICAgIGZpbGVzdG9jb3B5LmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gKiAgICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAqICAgICAgICAgICAgIHZhciB2YWwgPSBvYmpba2V5XTtcbiAqICAgICAgICAgICAgIHZhciBzcmNmaWxlID0gcGF0aC5qb2luKHJvb3RkaXIsIGtleSk7XG4gKiAgICAgICAgICAgICB2YXIgZGVzdGZpbGUgPSBwYXRoLmpvaW4ocm9vdGRpciwgdmFsKTtcbiAqICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY29weWluZyBcIitzcmNmaWxlK1wiIHRvIFwiK2Rlc3RmaWxlKTtcbiAqICAgICAgICAgICAgIHZhciBkZXN0ZGlyID0gcGF0aC5kaXJuYW1lKGRlc3RmaWxlKTtcbiAqICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHNyY2ZpbGUpICYmIGZzLmV4aXN0c1N5bmMoZGVzdGRpcikpIHtcbiAqICAgICAgICAgICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKHNyY2ZpbGUpLnBpcGUoXG4gKiAgICAgICAgICAgICAgICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGRlc3RmaWxlKSk7XG4gKiAgICAgICAgICAgICB9XG4gKiAgICAgICAgIH0pO1xuICogICAgIH0pO1xuICpcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiAzLiBGcm9tIHRoZSByb290IG9mIHlvdXIgcHJvamVjdCBtYWtlIHRoZSBmaWxlIGV4ZWN1dGFibGU6XG4gKiBgJCBjaG1vZCAreCBob29rcy9jb3B5X2FuZHJvaWRfbm90aWZpY2F0aW9uX2ljb25zLmpzYFxuICogQHVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBPbmVTaWduYWwgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvb25lc2lnbmFsL25neCc7XG4gKlxuICogY29uc3RydWN0b3IocHJpdmF0ZSBvbmVTaWduYWw6IE9uZVNpZ25hbCkgeyB9XG4gKlxuICogLi4uXG4gKlxuICogdGhpcy5vbmVTaWduYWwuc3RhcnRJbml0KCdiMmY3Zjk2Ni1kOGNjLTExZTQtYmVkMS1kZjhmMDViZTU1YmEnLCAnNzAzMzIyNzQ0MjYxJyk7XG4gKlxuICogdGhpcy5vbmVTaWduYWwuaW5Gb2N1c0Rpc3BsYXlpbmcodGhpcy5vbmVTaWduYWwuT1NJbkZvY3VzRGlzcGxheU9wdGlvbi5JbkFwcEFsZXJ0KTtcbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5oYW5kbGVOb3RpZmljYXRpb25SZWNlaXZlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gKiAgLy8gZG8gc29tZXRoaW5nIHdoZW4gbm90aWZpY2F0aW9uIGlzIHJlY2VpdmVkXG4gKiB9KTtcbiAqXG4gKiB0aGlzLm9uZVNpZ25hbC5oYW5kbGVOb3RpZmljYXRpb25PcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICogICAvLyBkbyBzb21ldGhpbmcgd2hlbiBhIG5vdGlmaWNhdGlvbiBpcyBvcGVuZWRcbiAqIH0pO1xuICpcbiAqIHRoaXMub25lU2lnbmFsLmVuZEluaXQoKTtcbiAqIGBgYFxuICogQGludGVyZmFjZXNcbiAqIE9TTm90aWZpY2F0aW9uXG4gKiBPU0xvY2tTY3JlZW5WaXNpYmlsaXR5XG4gKiBPU0Rpc3BsYXlUeXBlXG4gKiBPU05vdGlmaWNhdGlvblBheWxvYWRcbiAqIE9TQWN0aW9uQnV0dG9uXG4gKiBPU0JhY2tncm91bmRJbWFnZUxheW91dFxuICogT1NOb3RpZmljYXRpb25PcGVuZWRSZXN1bHRcbiAqIE9TQWN0aW9uVHlwZVxuICogT1NJbkFwcE1lc3NhZ2VBY3Rpb25cbiAqL1xuQFBsdWdpbih7XG4gIHBsdWdpbk5hbWU6ICdPbmVTaWduYWwnLFxuICBwbHVnaW46ICdvbmVzaWduYWwtY29yZG92YS1wbHVnaW4nLFxuICBwbHVnaW5SZWY6ICdwbHVnaW5zLk9uZVNpZ25hbCcsXG4gIHJlcG86ICdodHRwczovL2dpdGh1Yi5jb20vT25lU2lnbmFsL09uZVNpZ25hbC1Db3Jkb3ZhLVNESycsXG4gIHBsYXRmb3JtczogWydBbWF6b24gRmlyZSBPUycsICdBbmRyb2lkJywgJ2lPUycsICdXaW5kb3dzJ10sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9uZVNpZ25hbCBleHRlbmRzIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luIHtcbiAgLyoqXG4gICAqIGNvbnN0YW50cyB0byB1c2UgaW4gaW5Gb2N1c0Rpc3BsYXlpbmcoKVxuICAgKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBPU0luRm9jdXNEaXNwbGF5T3B0aW9uID0ge1xuICAgIE5vbmU6IDAsXG4gICAgSW5BcHBBbGVydDogMSxcbiAgICBOb3RpZmljYXRpb246IDIsXG4gIH07XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBPbmNlIHlvdSBhcmUgZG9uZSBjb25maWd1cmluZyBPbmVTaWduYWwsIGNhbGwgdGhlIGBlbmRJbml0YCBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIFlvdXIgT25lU2lnbmFsIGFwcCBpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ29vZ2xlUHJvamVjdE51bWJlciAqKkFORFJPSUQqKiAtIHlvdXIgR29vZ2xlIHByb2plY3QgbnVtYmVyOyBvbmx5IHJlcXVpcmVkIGZvciBBbmRyb2lkIEdDTS9GQ00gcHVzaGVzLlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHN0YXJ0SW5pdChhcHBJZDogc3RyaW5nLCBnb29nbGVQcm9qZWN0TnVtYmVyPzogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYSBub3RpZmljYXRpb24gaXMgcmVjZWl2ZWQsIHdoZXRoZXIgaXQgd2FzIGRpc3BsYXllZCBvciBub3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9uZVNpZ25hbFJlY2VpdmVkTm90aWZpY2F0aW9uPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBoYW5kbGVOb3RpZmljYXRpb25SZWNlaXZlZCgpOiBPYnNlcnZhYmxlPE9TTm90aWZpY2F0aW9uPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHJ1biB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIHRhcHBlZCBvbiBmcm9tIHRoZSBub3RpZmljYXRpb24gc2hhZGUgKCoqQU5EUk9JRCoqKSBvciBub3RpZmljYXRpb25cbiAgICogY2VudGVyICgqKmlPUyoqKSwgb3Igd2hlbiBjbG9zaW5nIGFuIEFsZXJ0IG5vdGlmaWNhdGlvbiBzaG93biBpbiB0aGUgYXBwIChpZiBJbkFwcEFsZXJ0IGlzIGVuYWJsZWQgaW5cbiAgICogaW5Gb2N1c0Rpc3BsYXlpbmcpLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxPbmVTaWduYWxPcGVuZWROb3RpZmljYXRpb24+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIG9ic2VydmFibGU6IHRydWUsXG4gIH0pXG4gIGhhbmRsZU5vdGlmaWNhdGlvbk9wZW5lZCgpOiBPYnNlcnZhYmxlPE9TTm90aWZpY2F0aW9uT3BlbmVkUmVzdWx0PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0byBwcm9jZXNzIGFuIEluLUFwcCBNZXNzYWdlIHRoZSB1c2VyIGp1c3QgdGFwcGVkIG9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxPU0luQXBwTWVzc2FnZUFjdGlvbj59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgaGFuZGxlSW5BcHBNZXNzYWdlQ2xpY2tlZCgpOiBPYnNlcnZhYmxlPE9TSW5BcHBNZXNzYWdlQWN0aW9uPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIGlPUyoqIC0gU2V0dGluZ3MgZm9yIGlPUyBhcHBzXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5nc1xuICAgKiAga09TU2V0dGluZ3NLZXlBdXRvUHJvbXB0OiBib29sZWFuID0gdHJ1ZVxuICAgKiAgQXV0byBwcm9tcHQgdXNlciBmb3Igbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiAga09TU2V0dGluZ3NLZXlJbkFwcExhdW5jaFVSTDogYm9vbGVhbiA9IGZhbHNlXG4gICAqICBMYXVuY2ggbm90aWZpY2F0aW9ucyB3aXRoIGEgbGF1bmNoIFVSTCBhcyBhbiBpbiBhcHAgd2Vidmlldy5cbiAgICogQHBhcmFtIHNldHRpbmdzLmtPU1NldHRpbmdzS2V5QXV0b1Byb21wdFxuICAgKiBAcGFyYW0gc2V0dGluZ3Mua09TU2V0dGluZ3NLZXlJbkFwcExhdW5jaFVSTFxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gICAgcGxhdGZvcm1zOiBbJ2lPUyddLFxuICB9KVxuICBpT1NTZXR0aW5ncyhzZXR0aW5nczogeyBrT1NTZXR0aW5nc0tleUF1dG9Qcm9tcHQ6IGJvb2xlYW47IGtPU1NldHRpbmdzS2V5SW5BcHBMYXVuY2hVUkw6IGJvb2xlYW4gfSk6IGFueSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE11c3QgYmUgY2FsbGVkIGFmdGVyIGBzdGFydEluaXRgIHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIE9uZVNpZ25hbC5cbiAgICpcbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlbmRJbml0KCk6IGFueSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb21wdCB0aGUgdXNlciBmb3Igbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zLiBDYWxsYmFjayBmaXJlcyBhcyBzb29uIGFzIHRoZSB1c2VyIGFjY2VwdHMgb3IgZGVjbGluZXMgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgcGxhdGZvcm1zOiBbJ2lPUyddLFxuICB9KVxuICBwcm9tcHRGb3JQdXNoTm90aWZpY2F0aW9uc1dpdGhVc2VyUmVzcG9uc2UoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgbGlzdCBvZiB0YWdzIHRoYXQgaGF2ZSBiZWVuIHNldCBvbiB0aGUgdXNlciBmcm9tIHRoZSBPbmVTaWduYWwgc2VydmVyLlxuICAgKlxuICAgKiBRdWlyayoqOiBZb3UgbXVzdCB3YWl0IGZvciBgZ2V0VGFnc2AgdG8gcmVzb2x2ZSBiZWZvcmUgY2FsbGluZyBpdCBhZ2FpbiwgYXMgdGhlIHBsdWdpbiB3aWxsIG9ubHkgcHJvY2VzcyB0aGUgbGFzdCBtZXRob2QgY2FsbCBhbmQgZGlzY2FyZCBhbnkgcHJldmlvdXMgb25lcy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRhZ3MgYXJlIHJlY2lldmVkLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRUYWdzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgeW91IHJldHJpZXZlIHRoZSBPbmVTaWduYWwgdXNlciBpZCBhbmQgZGV2aWNlIHRva2VuLlxuICAgKiBZb3VyIGhhbmRsZXIgaXMgY2FsbGVkIGFmdGVyIHRoZSBkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgd2l0aCBPbmVTaWduYWwuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgaWYgdGhlIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqICB1c2VySWQge3N0cmluZ30gT25lU2lnbmFsIHVzZXJJZCBpcyBhIFVVSUQgZm9ybWF0dGVkIHN0cmluZy4gKHVuaXF1ZSBwZXIgZGV2aWNlIHBlciBhcHApXG4gICAqXG4gICAqICBwdXNoVG9rZW4ge3N0cmluZ30gQSBwdXNoIHRva2VuIGlzIGEgR29vZ2xlL0FwcGxlIGFzc2lnbmVkIGlkZW50aWZpZXIodW5pcXVlIHBlciBkZXZpY2UgcGVyIGFwcCkuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldElkcygpOiBQcm9taXNlPHsgdXNlcklkOiBzdHJpbmc7IHB1c2hUb2tlbjogc3RyaW5nIH0+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGFnIGEgdXNlciBiYXNlZCBvbiBhbiBhcHAgZXZlbnQgb2YgeW91ciBjaG9vc2luZyBzbyBsYXRlciB5b3UgY2FuIGNyZWF0ZSBzZWdtZW50cyBvbiBbb25lc2lnbmFsLmNvbV0oaHR0cHM6Ly9vbmVzaWduYWwuY29tLykgdG8gdGFyZ2V0IHRoZXNlIHVzZXJzLlxuICAgKiBSZWNvbW1lbmQgdXNpbmcgc2VuZFRhZ3Mgb3ZlciBzZW5kVGFnIGlmIHlvdSBuZWVkIHRvIHNldCBtb3JlIHRoYW4gb25lIHRhZyBvbiBhIHVzZXIgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gS2V5IG9mIHlvdXIgY2hvb3NpbmcgdG8gY3JlYXRlIG9yIHVwZGF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFZhbHVlIHRvIHNldCBvbiB0aGUga2V5LiBOT1RFOiBQYXNzaW5nIGluIGEgYmxhbmsgU3RyaW5nIGRlbGV0ZXMgdGhlIGtleSwgeW91IGNhbiBhbHNvIGNhbGwgZGVsZXRlVGFnLlxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNlbmRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRhZyBhIHVzZXIgYmFzZWQgb24gYW4gYXBwIGV2ZW50IG9mIHlvdXIgY2hvb3Npbmcgc28gbGF0ZXIgeW91IGNhbiBjcmVhdGUgc2VnbWVudHMgb24gW29uZXNpZ25hbC5jb21dKGh0dHBzOi8vb25lc2lnbmFsLmNvbS8pIHRvIHRhcmdldCB0aGVzZSB1c2Vycy5cbiAgICogUmVjb21tZW5kIHVzaW5nIHNlbmRUYWdzIG92ZXIgc2VuZFRhZyBpZiB5b3UgbmVlZCB0byBzZXQgbW9yZSB0aGFuIG9uZSB0YWcgb24gYSB1c2VyIGF0IGEgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFBhc3MgYSBqc29uIG9iamVjdCB3aXRoIGtleS92YWx1ZSBwYWlycyBsaWtlOiB7a2V5OiBcInZhbHVlXCIsIGtleTI6IFwidmFsdWUyXCJ9XG4gICAqIEBwYXJhbSBqc29uXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2VuZFRhZ3MoanNvbjogYW55KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgdGFnIHRoYXQgd2FzIHByZXZpb3VzbHkgc2V0IG9uIGEgdXNlciB3aXRoIGBzZW5kVGFnYCBvciBgc2VuZFRhZ3NgLiBVc2UgYGRlbGV0ZVRhZ3NgIGlmIHlvdSBuZWVkIHRvIGRlbGV0ZSBtb3JlIHRoYW4gb25lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gS2V5IHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIGtleVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGRlbGV0ZVRhZyhrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogRGVsZXRlcyB0YWdzIHRoYXQgd2VyZSBwcmV2aW91c2x5IHNldCBvbiBhIHVzZXIgd2l0aCBgc2VuZFRhZ2Agb3IgYHNlbmRUYWdzYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gS2V5cyB0byByZW1vdmUuXG4gICAqIEBwYXJhbSBrZXlzXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZGVsZXRlVGFncyhrZXlzOiBzdHJpbmdbXSk6IHZvaWQge31cblxuICAvKipcbiAgICogQ2FsbCB0aGlzIHdoZW4geW91IHdvdWxkIGxpa2UgdG8gcHJvbXB0IGFuIGlPUyB1c2VyIHRvIGFjY2VwdCBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCB0aGUgZGVmYXVsdCBzeXN0ZW0gcHJvbXB0LlxuICAgKiBPbmx5IHdvcmtzIGlmIHlvdSBzZXQgYGtPU1NldHRpbmdzQXV0b1Byb21wdGAgdG8gYGZhbHNlYCBpbiBgaU9TU2V0dGluZ3NgXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgcmVnaXN0ZXJGb3JQdXNoTm90aWZpY2F0aW9ucygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFdhcm5pbmc6XG4gICAqIE9ubHkgYXBwbGllcyB0byBBbmRyb2lkIGFuZCBBbWF6b24uIFlvdSBjYW4gY2FsbCB0aGlzIGZyb20geW91ciBVSSBmcm9tIGEgYnV0dG9uIHByZXNzIGZvciBleGFtcGxlIHRvIGdpdmUgeW91ciB1c2VyJ3Mgb3B0aW9ucyBmb3IgeW91ciBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0IE9uZVNpZ25hbCBhbHdheXMgdmlicmF0ZXMgdGhlIGRldmljZSB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIGRpc3BsYXllZCB1bmxlc3MgdGhlIGRldmljZSBpcyBpbiBhIHRvdGFsIHNpbGVudCBtb2RlLlxuICAgKiBQYXNzaW5nIGZhbHNlIG1lYW5zIHRoYXQgdGhlIGRldmljZSB3aWxsIG9ubHkgdmlicmF0ZSBsaWdodGx5IHdoZW4gdGhlIGRldmljZSBpcyBpbiBpdCdzIHZpYnJhdGUgb25seSBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZhbHNlIHRvIGRpc2FibGUgdmlicmF0ZSwgdHJ1ZSB0byByZS1lbmFibGUgaXQuXG4gICAqIEBwYXJhbSBlbmFibGVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlbmFibGVWaWJyYXRlKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogV2FybmluZzpcbiAgICogT25seSBhcHBsaWVzIHRvIEFuZHJvaWQgYW5kIEFtYXpvbi4gWW91IGNhbiBjYWxsIHRoaXMgZnJvbSB5b3VyIFVJIGZyb20gYSBidXR0b24gcHJlc3MgZm9yIGV4YW1wbGUgdG8gZ2l2ZSB5b3VyIHVzZXIncyBvcHRpb25zIGZvciB5b3VyIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgT25lU2lnbmFsIHBsYXlzIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IG5vdGlmaWNhdGlvbiBzb3VuZCB3aGVuIHRoZSBkZXZpY2UncyBub3RpZmljYXRpb24gc3lzdGVtIHZvbHVtZSBpcyB0dXJuZWQgb24uXG4gICAqIFBhc3NpbmcgZmFsc2UgbWVhbnMgdGhhdCB0aGUgZGV2aWNlIHdpbGwgb25seSB2aWJyYXRlIHVubGVzcyB0aGUgZGV2aWNlIGlzIHNldCB0byBhIHRvdGFsIHNpbGVudCBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZhbHNlIHRvIGRpc2FibGUgc291bmQsIHRydWUgdG8gcmUtZW5hYmxlIGl0LlxuICAgKiBAcGFyYW0gZW5hYmxlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZW5hYmxlU291bmQoZW5hYmxlOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKlxuICAgKiBTZXR0aW5nIHRvIGNvbnRyb2wgaG93IE9uZVNpZ25hbCBub3RpZmljYXRpb25zIHdpbGwgYmUgc2hvd24gd2hlbiBvbmUgaXMgcmVjZWl2ZWQgd2hpbGUgeW91ciBhcHAgaXMgaW4gZm9jdXMuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gaW5BcHBBbGVydCwgd2hpY2ggY2FuIGJlIGhlbHBmdWwgZHVyaW5nIGRldmVsb3BtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0Rpc3BsYXlUeXBlfSBkaXNwbGF5T3B0aW9uXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgaW5Gb2N1c0Rpc3BsYXlpbmcoZGlzcGxheU9wdGlvbjogT1NEaXNwbGF5VHlwZSk6IGFueSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGZhbHNlIHRvIG9wdCB1c2VycyBvdXQgb2YgcmVjZWl2aW5nIGFsbCBub3RpZmljYXRpb25zIHRocm91Z2ggT25lU2lnbmFsLlxuICAgKiBZb3UgY2FuIHBhc3MgdHJ1ZSBsYXRlciB0byBvcHQgdXNlcnMgYmFjayBpbnRvIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0U3Vic2NyaXB0aW9uKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IG5vdGlmaWNhdGlvbiBhbmQgcGVybWlzc2lvbiBzdGF0ZS4gUmV0dXJucyBhIE9TUGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlIHR5cGUgZGVzY3JpYmVkIGJlbG93LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPU1Blcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZT59XG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFBlcm1pc3Npb25TdWJzY3JpcHRpb25TdGF0ZSgpOiBQcm9taXNlPE9TUGVybWlzc2lvblN1YnNjcmlwdGlvblN0YXRlPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7bm90aWZpY2F0aW9uT2JqfSBQYXJhbWV0ZXJzIHNlZSBQT1NUIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3VtZW50YXRpb24ub25lc2lnbmFsLmNvbS92Mi4wL2RvY3Mvbm90aWZpY2F0aW9ucy1jcmVhdGUtbm90aWZpY2F0aW9uKVxuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uT2JqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgaWYgdGhlIG5vdGlmaWNhdGlvbiB3YXMgc2VuZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHBvc3ROb3RpZmljYXRpb24obm90aWZpY2F0aW9uT2JqOiBPU05vdGlmaWNhdGlvbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgYSBzaW5nbGUgT25lU2lnbmFsIG5vdGlmaWNhdGlvbiBiYXNlZCBvbiBpdHMgQW5kcm9pZCBub3RpZmljYXRpb24gaW50ZWdlciBpZC4gVXNlIGluc3RlYWQgb2YgTm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwoaWQpOyBvdGhlcndpc2UgdGhlIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHJlc3RvcmVkIHdoZW4geW91ciBhcHAgaXMgcmVzdGFydGVkLlxuICAgKlxuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uSWQge3N0cmluZ31cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBjYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUHJvbXB0cyB0aGUgdXNlciBmb3IgbG9jYXRpb24gcGVybWlzc2lvbiB0byBhbGxvdyBnZW90YWdnaW5nIGJhc2VkIG9uIHRoZSBcIkxvY2F0aW9uIHJhZGl1c1wiIGZpbHRlciBvbiB0aGUgT25lU2lnbmFsIGRhc2hib2FyZC5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBwcm9tcHRMb2NhdGlvbigpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBlbWFpbCB7c3RyaW5nfVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHN5bmNIYXNoZWRFbWFpbChlbWFpbDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBFbmFibGUgbG9nZ2luZyB0byBoZWxwIGRlYnVnIGlmIHlvdSBydW4gaW50byBhbiBpc3N1ZSBzZXR0aW5nIHVwIE9uZVNpZ25hbC5cbiAgICogVGhlIGxvZ2dpbmcgbGV2ZWxzIGFyZSBhcyBmb2xsb3dzOiAwID0gTm9uZSwgMT0gRmF0YWwsIDIgPSBFcnJvcnMsIDMgPSBXYXJuaW5ncywgNCA9IEluZm8sIDUgPSBEZWJ1ZywgNiA9IFZlcmJvc2VcbiAgICpcbiAgICogVGhlIGhpZ2hlciB0aGUgdmFsdWUgdGhlIG1vcmUgaW5mb3JtYXRpb24gaXMgc2hvd24uXG4gICAqXG4gICAqIEBwYXJhbSB7bG9nbGV2ZWx9IGNvbnRhaW5zIHR3byBwcm9wZXJ0aWVzOiBsb2dMZXZlbCAoZm9yIGNvbnNvbGUgbG9nZ2luZykgYW5kIHZpc3VhbExldmVsIChmb3IgZGlhbG9nIG1lc3NhZ2VzKVxuICAgKiBAcGFyYW0gbG9nTGV2ZWxcbiAgICogQHBhcmFtIGxvZ0xldmVsLmxvZ0xldmVsXG4gICAqIEBwYXJhbSBsb2dMZXZlbC52aXN1YWxMZXZlbFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldExvZ0xldmVsKGxvZ0xldmVsOiB7IGxvZ0xldmVsOiBudW1iZXI7IHZpc3VhbExldmVsOiBudW1iZXIgfSk6IHZvaWQge31cblxuICAvKipcbiAgICogRGlzYWJsZSBvciBlbmFibGUgbG9jYXRpb24gY29sbGVjdGlvbiAoRGVmYXVsdHMgdG8gZW5hYmxlZCkgaWYgeW91ciBhcHAgaGFzIGxvY2F0aW9uIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZWQge2Jvb2xlYW59XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0TG9jYXRpb25TaGFyZWQoc2hhcmVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGUgcGFzc2VkIGluIGZ1bmN0aW9uIHdpbGwgYmUgZmlyZWQgd2hlbiBhIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHNldHRpbmcgY2hhbmdlcy5cbiAgICogVGhpcyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGV2ZW50czpcbiAgICogLSBOb3RpZmljYXRpb24gcGVybWlzc2lvbiBwcm9tcHQgc2hvd25cbiAgICogLSBUaGUgdXNlciBhY2NlcHRpbmcgb3IgZGVjbGluaW5nIHRoZSBwZXJtaXNzaW9uIHByb21wdFxuICAgKiAtIEVuYWJsaW5nL2Rpc2FibGluZyBub3RpZmljYXRpb25zIGZvciB5b3VyIGFwcCBpbiB0aGUgZGV2aWNlIFNldHRpbmdzIGFmdGVyIHJldHVybmluZyB0byB5b3VyIGFwcC5cbiAgICpcbiAgICogQHJldHVybnMge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBhZGRQZXJtaXNzaW9uT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aWxsIGJlIGZpcmVkIHdoZW4gYSBub3RpZmljYXRpb24gc3Vic2NyaXB0aW9uIHByb3BlcnR5IGNoYW5nZXMuXG4gICAqIFRoaXMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBldmVudHM6XG4gICAqIC0gR2V0dGluZyBhIHB1c2ggdG9rZW4gZnJvbSBBcHBsZSAvIEdvb2dsZS5cbiAgICogLSBHZXR0aW5nIGEgcGxheWVyIC8gdXNlciBpZCBmcm9tIE9uZVNpZ25hbFxuICAgKiAtIE9uZVNpZ25hbC5zZXRTdWJzY3JpcHRpb24gaXMgY2FsbGVkXG4gICAqIC0gVXNlciBkaXNhYmxlcyBvciBlbmFibGVzIG5vdGlmaWNhdGlvbnNcbiAgICpcbiAgICogQHJldHVybnMge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBvYnNlcnZhYmxlOiB0cnVlLFxuICB9KVxuICBhZGRTdWJzY3JpcHRpb25PYnNlcnZlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIE9uZVNpZ25hbCBub3RpZmljYXRpb25zXG4gICAqXG4gICAqIEBwYXJhbSBlbWFpbFxuICAgKiBAcGFyYW0gZW1haWxBdXRoVG9rZW5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0RW1haWwoZW1haWw6IHN0cmluZywgZW1haWxBdXRoVG9rZW4/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGxvZ291dCBmdW5jdGlvbmFsaXR5LCB5b3UgY2FuIGNhbGwgbG9nb3V0RW1haWwgdG8gZGlzc29jaWF0ZSB0aGUgZW1haWwgZnJvbSB0aGUgZGV2aWNlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGxvZ291dEVtYWlsKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gd2lsbCBiZSBmaXJlZCB3aGVuIGEgbm90aWZpY2F0aW9uIHN1YnNjcmlwdGlvbiBwcm9wZXJ0eSBjaGFuZ2VzLlxuICAgKiBUaGlzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIEdldHRpbmcgYSBwdXNoIHRva2VuIGZyb20gQXBwbGUgLyBHb29nbGUuXG4gICAqIC0gR2V0dGluZyBhIHBsYXllciAvIHVzZXIgaWQgZnJvbSBPbmVTaWduYWxcbiAgICogLSBPbmVTaWduYWwuc2V0U3Vic2NyaXB0aW9uIGlzIGNhbGxlZFxuICAgKiAtIFVzZXIgZGlzYWJsZXMgb3IgZW5hYmxlcyBub3RpZmljYXRpb25zXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgb2JzZXJ2YWJsZTogdHJ1ZSxcbiAgfSlcbiAgYWRkRW1haWxTdWJzY3JpcHRpb25PYnNlcnZlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIE9uZVNpZ25hbCBub3RpZmljYXRpb25zXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgY2xlYXJPbmVTaWduYWxOb3RpZmljYXRpb25zKCk6IHZvaWQge31cblxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byBkZWxheSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFNESyB1bnRpbCB0aGUgdXNlciBwcm92aWRlcyBwcml2YWN5IGNvbnNlbnQuXG4gICAqIFRoZSBTREsgd2lsbCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQgdW50aWwgdGhlIHByb3ZpZGVVc2VyQ29uc2VudCh0cnVlKSBtZXRob2QgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlcXVpcmVkXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFJlcXVpcmVzVXNlclByaXZhY3lDb25zZW50KHJlcXVpcmVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBJZiB5b3VyIGFwcGxpY2F0aW9uIGlzIHNldCB0byByZXF1aXJlIHRoZSB1c2VyJ3MgcHJpdmFjeSBjb25zZW50LCB5b3UgY2FuIHByb3ZpZGUgdGhpcyBjb25zZW50IHVzaW5nIHRoaXMgbWV0aG9kLlxuICAgKiBVbnRpbCB5b3UgY2FsbCBwcm92aWRlVXNlckNvbnNlbnQodHJ1ZSksIHRoZSBTREsgd2lsbCBub3QgZnVsbHkgaW5pdGlhbGl6ZSBhbmQgd2lsbCBub3Qgc2VuZCBhbnkgZGF0YSB0byBPbmVTaWduYWwuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ3JhbnRlZFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBwcm92aWRlVXNlckNvbnNlbnQoZ3JhbnRlZDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGNhbGxiYWNrLCB3aGljaCByZXR1cm5zIGEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIGlmIHRoZSB1c2VyIGhhcyBnaXZlbiBwcml2YWN5IGNvbnNlbnQgeWV0LlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICAgKi9cbiAgQENvcmRvdmEoKVxuICB1c2VyUHJvdmlkZWRQcml2YWN5Q29uc2VudChjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gdXNlIHlvdXIgb3duIHN5c3RlbSdzIHVzZXIgSUQncyB0byBzZW5kIHB1c2ggbm90aWZpY2F0aW9ucyB0byB5b3VyIHVzZXJzLlxuICAgKiBUbyB0aWUgYSB1c2VyIHRvIGEgZ2l2ZW4gdXNlciBJRCwgeW91IGNhbiB1c2UgdGhpcyBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRlcm5hbElkXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEV4dGVybmFsVXNlcklkKGV4dGVybmFsSWQ6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlcyB3aGF0ZXZlciB3YXMgc2V0IGFzIHRoZSBjdXJyZW50IHVzZXIncyBleHRlcm5hbCB1c2VyIElELlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICByZW1vdmVFeHRlcm5hbFVzZXJJZCgpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRyaWdnZXIuIE1heSBzaG93IGFuIEluLUFwcCBNZXNzYWdlIGlmIGl0cyB0cmlnZ2VyIGNvbmRpdGlvbnMgd2VyZSBtZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGZvciB0aGUgdHJpZ2dlci5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBPYmplY3R9IHZhbHVlIFZhbHVlIGZvciB0aGUgdHJpZ2dlci4gU3RyaW5nIG9yIG51bWJlciByZWNvbW1lbmRlZC4gT2JqZWN0IHBhc3NlZCBpbiB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZy5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBhZGRUcmlnZ2VyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBBZGQgYSBtYXAgb2YgdHJpZ2dlcnMuIE1heSBzaG93IGFuIEluLUFwcCBNZXNzYWdlIGlmIGl0cyB0cmlnZ2VyIGNvbmRpdGlvbnMgd2VyZSBtZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IE9iamVjdD59IHRyaWdnZXJzIEFsbG93cyB5b3UgdG8gc2V0IG11bHRpcGxlIHRyaWdnZXIga2V5L3ZhbHVlIHBhaXJzIHNpbXVsdGFuZW91c2x5LiBQYXNzIGEganNvbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgbGlrZTogYHtcImtleVwiOiBcInZhbHVlXCIsIFwia2V5MlwiOiBcInZhbHVlMlwifWAuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgYWRkVHJpZ2dlcnModHJpZ2dlcnM6IE9iamVjdCk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNpbmdsZSB0cmlnZ2VyIGZvciB0aGUgZ2l2ZW4ga2V5LiBNYXkgc2hvdyBhbiBJbi1BcHAgTWVzc2FnZSBpZiBpdHMgdHJpZ2dlciBjb25kaXRpb25zIHdlcmUgbWV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEtleSBmb3IgdHJpZ2dlciB0byByZW1vdmUuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgcmVtb3ZlVHJpZ2dlckZvcktleShrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGxpc3Qgb2YgdHJpZ2dlcnMgYmFzZWQgb24gYSBjb2xsZWN0aW9uIChhcnJheSkgb2Yga2V5cy4gTWF5IHNob3cgYW4gSW4tQXBwIE1lc3NhZ2UgaWYgaXRzIHRyaWdnZXIgY29uZGl0aW9ucyB3ZXJlIG1ldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0ga2V5cyBSZW1vdmVzIGEgY29sbGVjdGlvbiBvZiB0cmlnZ2VycyBmcm9tIHRoZWlyIGtleXMuIFBhc3MgYW4gYXJyYXkgb2YgdHJpZ2dlciBrZXlzIGxpa2U6IGBbXCJrZXkxXCIsIFwia2V5MlwiLCBcImtleTNcIl1gLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIHJlbW92ZVRyaWdnZXJzRm9yS2V5cyhrZXlzOiBzdHJpbmdbXSk6IHZvaWQge31cblxuICAvKipcbiAgICogR2V0cyBhIHRyaWdnZXIgdmFsdWUgZm9yIGEgcHJvdmlkZWQgdHJpZ2dlciBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGZvciB0cmlnZ2VyIHRvIGdldCB2YWx1ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgT2JqZWN0Pn0gUmV0dXJuIHZhbHVlIHNldCB3aXRoIGBhZGRUcmlnZ2VyYCwgb3IgYG51bGxgL2BuaWxgIChpT1MpIGlmIG5ldmVyIHNldCBvciByZW1vdmVkLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRUcmlnZ2VyVmFsdWVGb3JLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IE9iamVjdD4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIHRlbXBvcmFyaWx5IHBhdXNlIGFsbCBJbi1BcHAgTWVzc2FnZXMuIFlvdSBtYXkgd2FudCB0byBkbyB0aGlzIHdoaWxlIHRoZSB1c2VyIGlzIGVuZ2FnZWQgaW4gYW4gYWN0aXZpdHkgdGhhdCB5b3UgZG9uJ3Qgd2FudCBhIG1lc3NhZ2UgdG8gaW50ZXJydXB0IChzdWNoIGFzIHdhdGNoaW5nIGEgdmlkZW8pLlxuICAgKiBBbiBJbi1BcHAgTWVzc2FnZSB0aGF0IHdvdWxkIGRpc3BsYXkgaWYgbm90IHBhdXNlZCB3aWxsIGRpc3BsYXkgcmlnaHQgYWZ0ZXIgcmVzdW1lIGlmIGl0cyBjb25kaXRpb25zIHRvIGRpc3BsYXkgcmVtYWlucyBzYXRpc2ZpZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcGF1c2UgVG8gcGF1c2UsIHNldCBgdHJ1ZWAuIFRvIHJlc3VtZSwgc2V0IGBmYWxzZWAuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgcGF1c2VJbkFwcE1lc3NhZ2VzKHBhdXNlOiBib29sZWFuKTogdm9pZCB7fVxufVxuIl19
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"OSNotification":{"__symbolic":"interface"},"OSLockScreenVisibility":{"Public":1,"Private":0,"Secret":-1},"OSDisplayType":{"None":0,"InAppAlert":1,"Notification":2},"OSNotificationPayload":{"__symbolic":"interface"},"OSActionButton":{"__symbolic":"interface"},"OSPermissionState":{"__symbolic":"interface"},"OSSubscriptionState":{"__symbolic":"interface"},"OSPermissionSubscriptionState":{"__symbolic":"interface"},"OSBackgroundImageLayout":{"__symbolic":"interface"},"OSNotificationOpenedResult":{"__symbolic":"interface"},"OSActionType":{"Opened":0,"ActionTake":1},"OSInAppMessageAction":{"__symbolic":"interface"},"OneSignal":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@awesome-cordova-plugins/core","name":"AwesomeCordovaNativePlugin","line":440,"character":31},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":439,"character":1}}],"members":{"startInit":[{"__symbolic":"method"}],"handleNotificationReceived":[{"__symbolic":"method"}],"handleNotificationOpened":[{"__symbolic":"method"}],"handleInAppMessageClicked":[{"__symbolic":"method"}],"iOSSettings":[{"__symbolic":"method"}],"endInit":[{"__symbolic":"method"}],"promptForPushNotificationsWithUserResponse":[{"__symbolic":"method"}],"getTags":[{"__symbolic":"method"}],"getIds":[{"__symbolic":"method"}],"sendTag":[{"__symbolic":"method"}],"sendTags":[{"__symbolic":"method"}],"deleteTag":[{"__symbolic":"method"}],"deleteTags":[{"__symbolic":"method"}],"registerForPushNotifications":[{"__symbolic":"method"}],"enableVibrate":[{"__symbolic":"method"}],"enableSound":[{"__symbolic":"method"}],"inFocusDisplaying":[{"__symbolic":"method"}],"setSubscription":[{"__symbolic":"method"}],"getPermissionSubscriptionState":[{"__symbolic":"method"}],"postNotification":[{"__symbolic":"method"}],"cancelNotification":[{"__symbolic":"method"}],"promptLocation":[{"__symbolic":"method"}],"syncHashedEmail":[{"__symbolic":"method"}],"setLogLevel":[{"__symbolic":"method"}],"setLocationShared":[{"__symbolic":"method"}],"addPermissionObserver":[{"__symbolic":"method"}],"addSubscriptionObserver":[{"__symbolic":"method"}],"setEmail":[{"__symbolic":"method"}],"logoutEmail":[{"__symbolic":"method"}],"addEmailSubscriptionObserver":[{"__symbolic":"method"}],"clearOneSignalNotifications":[{"__symbolic":"method"}],"setRequiresUserPrivacyConsent":[{"__symbolic":"method"}],"provideUserConsent":[{"__symbolic":"method"}],"userProvidedPrivacyConsent":[{"__symbolic":"method"}],"setExternalUserId":[{"__symbolic":"method"}],"removeExternalUserId":[{"__symbolic":"method"}],"addTrigger":[{"__symbolic":"method"}],"addTriggers":[{"__symbolic":"method"}],"removeTriggerForKey":[{"__symbolic":"method"}],"removeTriggersForKeys":[{"__symbolic":"method"}],"getTriggerValueForKey":[{"__symbolic":"method"}],"pauseInAppMessages":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"OSNotification":{"__symbolic":"interface"},"OSLockScreenVisibility":{"Public":1,"Private":0,"Secret":-1},"OSDisplayType":{"None":0,"InAppAlert":1,"Notification":2},"OSNotificationPayload":{"__symbolic":"interface"},"OSActionButton":{"__symbolic":"interface"},"OSPermissionState":{"__symbolic":"interface"},"OSSubscriptionState":{"__symbolic":"interface"},"OSPermissionSubscriptionState":{"__symbolic":"interface"},"OSBackgroundImageLayout":{"__symbolic":"interface"},"OSNotificationOpenedResult":{"__symbolic":"interface"},"OSActionType":{"Opened":0,"ActionTake":1},"OSInAppMessageAction":{"__symbolic":"interface"},"OneSignal":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@awesome-cordova-plugins/core","name":"AwesomeCordovaNativePlugin","line":438,"character":31},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":437,"character":1}}],"members":{"startInit":[{"__symbolic":"method"}],"handleNotificationReceived":[{"__symbolic":"method"}],"handleNotificationOpened":[{"__symbolic":"method"}],"handleInAppMessageClicked":[{"__symbolic":"method"}],"iOSSettings":[{"__symbolic":"method"}],"endInit":[{"__symbolic":"method"}],"promptForPushNotificationsWithUserResponse":[{"__symbolic":"method"}],"getTags":[{"__symbolic":"method"}],"getIds":[{"__symbolic":"method"}],"sendTag":[{"__symbolic":"method"}],"sendTags":[{"__symbolic":"method"}],"deleteTag":[{"__symbolic":"method"}],"deleteTags":[{"__symbolic":"method"}],"registerForPushNotifications":[{"__symbolic":"method"}],"enableVibrate":[{"__symbolic":"method"}],"enableSound":[{"__symbolic":"method"}],"inFocusDisplaying":[{"__symbolic":"method"}],"setSubscription":[{"__symbolic":"method"}],"getPermissionSubscriptionState":[{"__symbolic":"method"}],"postNotification":[{"__symbolic":"method"}],"cancelNotification":[{"__symbolic":"method"}],"promptLocation":[{"__symbolic":"method"}],"syncHashedEmail":[{"__symbolic":"method"}],"setLogLevel":[{"__symbolic":"method"}],"setLocationShared":[{"__symbolic":"method"}],"addPermissionObserver":[{"__symbolic":"method"}],"addSubscriptionObserver":[{"__symbolic":"method"}],"setEmail":[{"__symbolic":"method"}],"logoutEmail":[{"__symbolic":"method"}],"addEmailSubscriptionObserver":[{"__symbolic":"method"}],"clearOneSignalNotifications":[{"__symbolic":"method"}],"setRequiresUserPrivacyConsent":[{"__symbolic":"method"}],"provideUserConsent":[{"__symbolic":"method"}],"userProvidedPrivacyConsent":[{"__symbolic":"method"}],"setExternalUserId":[{"__symbolic":"method"}],"removeExternalUserId":[{"__symbolic":"method"}],"addTrigger":[{"__symbolic":"method"}],"addTriggers":[{"__symbolic":"method"}],"removeTriggerForKey":[{"__symbolic":"method"}],"removeTriggersForKeys":[{"__symbolic":"method"}],"getTriggerValueForKey":[{"__symbolic":"method"}],"pauseInAppMessages":[{"__symbolic":"method"}]}}}}]
package/ngx/package.json CHANGED
@@ -1 +1 @@
1
- {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/onesignal","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"5.36.0"}
1
+ {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/onesignal","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^7.3.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"5.37.2"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/onesignal","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"5.36.0"}
1
+ {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/onesignal","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^7.3.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"5.37.2"}
package/README.md DELETED
@@ -1,92 +0,0 @@
1
- <a style="float:right;font-size:12px;" href="http://github.com/danielsogl/awesome-cordova-plugins/edit/master/src/@awesome-cordova-plugins/plugins/onesignal/index.ts#L325">
2
- Improve this doc
3
- </a>
4
-
5
- # OneSignal
6
-
7
- ```
8
- $ ionic cordova plugin add onesignal-cordova-plugin
9
- $ npm install @ionic-native/plugins/onesignal
10
- ```
11
-
12
- ## [Usage Documentation](https://ionicframework.com/docs/native/onesignal/)
13
-
14
- Plugin Repo: [https://github.com/OneSignal/OneSignal-Cordova-SDK](https://github.com/OneSignal/OneSignal-Cordova-SDK)
15
-
16
- The OneSignal plugin is an client implementation for using the [OneSignal](https://onesignal.com/) Service.
17
- OneSignal is a simple implementation for delivering push notifications.
18
-
19
- Please view the official [OneSignal Ionic SDK Installation](https://documentation.onesignal.com/docs/ionic-sdk-setup) guide
20
- for more information.
21
-
22
- #### Icons
23
- If you want to use generated icons with command `ionic cordova resources`:
24
-
25
- 1. Add a file to your `hooks` directory called `copy_android_notification_icons.js`
26
-
27
- 2. Configure the hook in your config.xml
28
- ```
29
- <platform name="android">
30
- <hook type="after_prepare" src="hooks/copy_android_notification_icons.js" />
31
- </platform>
32
- ```
33
-
34
- 3. Put the following code in it:
35
-
36
- ```
37
- #!/usr/bin/env node
38
-
39
- var fs = require('fs');
40
- var path = require('path');
41
-
42
- var filestocopy = [{
43
- "resources/android/icon/drawable-hdpi-icon.png":
44
- "platforms/android/app/src/main/res/drawable-hdpi/ic_stat_onesignal_default.png"
45
- }, {
46
- "resources/android/icon/drawable-mdpi-icon.png":
47
- "platforms/android/app/src/main/res/drawable-mdpi/ic_stat_onesignal_default.png"
48
- }, {
49
- "resources/android/icon/drawable-xhdpi-icon.png":
50
- "platforms/android/app/src/main/res/drawable-xhdpi/ic_stat_onesignal_default.png"
51
- }, {
52
- "resources/android/icon/drawable-xxhdpi-icon.png":
53
- "platforms/android/app/src/main/res/drawable-xxhdpi/ic_stat_onesignal_default.png"
54
- }, {
55
- "resources/android/icon/drawable-xxxhdpi-icon.png":
56
- "platforms/android/app/src/main/res/drawable-xxxhdpi/ic_stat_onesignal_default.png"
57
- } ];
58
-
59
- module.exports = function(context) {
60
-
61
- // no need to configure below
62
- var rootdir = context.opts.projectRoot;
63
-
64
- filestocopy.forEach(function(obj) {
65
- Object.keys(obj).forEach(function(key) {
66
- var val = obj[key];
67
- var srcfile = path.join(rootdir, key);
68
- var destfile = path.join(rootdir, val);
69
- console.log("copying "+srcfile+" to "+destfile);
70
- var destdir = path.dirname(destfile);
71
- if (fs.existsSync(srcfile) && fs.existsSync(destdir)) {
72
- fs.createReadStream(srcfile).pipe(
73
- fs.createWriteStream(destfile));
74
- }
75
- });
76
- });
77
-
78
- };
79
- ```
80
-
81
- 3. From the root of your project make the file executable:
82
- `$ chmod +x hooks/copy_android_notification_icons.js`
83
-
84
- ## Supported platforms
85
-
86
- - Amazon Fire OS
87
- - Android
88
- - iOS
89
- - Windows
90
-
91
-
92
-