@sunbird-cb/consumption 0.0.43 → 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/bundles/sunbird-cb-consumption.umd.js +1244 -165
  2. package/bundles/sunbird-cb-consumption.umd.js.map +1 -1
  3. package/bundles/sunbird-cb-consumption.umd.min.js +2 -2
  4. package/bundles/sunbird-cb-consumption.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +175 -0
  6. package/esm2015/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +261 -0
  7. package/esm2015/lib/_common/cards/cards.component.js +24 -25
  8. package/esm2015/lib/_common/cards/cards.module.js +28 -3
  9. package/esm2015/lib/_common/content-progress/content-progress.component.js +89 -0
  10. package/esm2015/lib/_common/content-progress/content-progress.module.js +22 -0
  11. package/esm2015/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +43 -2
  12. package/esm2015/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.js +225 -0
  13. package/esm2015/lib/_common/dialog-components/dialog-components.module.js +43 -0
  14. package/esm2015/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.js +2 -4
  15. package/esm2015/lib/_pipes/object-to-array/object-to-array.pipe.js +28 -0
  16. package/esm2015/lib/_pipes/object-to-array/object-to-array.pipe.module.js +19 -0
  17. package/esm2015/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +2 -2
  18. package/esm2015/lib/_services/certificate.service.js +63 -0
  19. package/esm2015/lib/_services/multilingual-translations.service.js +27 -24
  20. package/esm2015/lib/consumption.module.js +1 -1
  21. package/esm2015/public-api.js +2 -1
  22. package/esm2015/sunbird-cb-consumption.js +34 -26
  23. package/esm5/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +202 -0
  24. package/esm5/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +278 -0
  25. package/esm5/lib/_common/cards/cards.component.js +28 -17
  26. package/esm5/lib/_common/cards/cards.module.js +28 -3
  27. package/esm5/lib/_common/content-progress/content-progress.component.js +94 -0
  28. package/esm5/lib/_common/content-progress/content-progress.module.js +26 -0
  29. package/esm5/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +58 -8
  30. package/esm5/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.js +248 -0
  31. package/esm5/lib/_common/dialog-components/dialog-components.module.js +47 -0
  32. package/esm5/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.js +2 -4
  33. package/esm5/lib/_pipes/object-to-array/object-to-array.pipe.js +57 -0
  34. package/esm5/lib/_pipes/object-to-array/object-to-array.pipe.module.js +23 -0
  35. package/esm5/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +3 -3
  36. package/esm5/lib/_services/certificate.service.js +70 -0
  37. package/esm5/lib/_services/multilingual-translations.service.js +27 -24
  38. package/esm5/lib/consumption.module.js +1 -1
  39. package/esm5/public-api.js +2 -1
  40. package/esm5/sunbird-cb-consumption.js +34 -26
  41. package/fesm2015/sunbird-cb-consumption.js +1075 -136
  42. package/fesm2015/sunbird-cb-consumption.js.map +1 -1
  43. package/fesm5/sunbird-cb-consumption.js +1211 -140
  44. package/fesm5/sunbird-cb-consumption.js.map +1 -1
  45. package/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.d.ts +28 -0
  46. package/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.d.ts +41 -0
  47. package/lib/_common/cards/cards.component.d.ts +5 -3
  48. package/lib/_common/content-progress/content-progress.component.d.ts +13 -0
  49. package/lib/_common/content-progress/content-progress.module.d.ts +2 -0
  50. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.d.ts +2 -0
  51. package/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.d.ts +22 -0
  52. package/lib/_common/dialog-components/dialog-components.module.d.ts +2 -0
  53. package/lib/_pipes/object-to-array/object-to-array.pipe.d.ts +4 -0
  54. package/lib/_pipes/object-to-array/object-to-array.pipe.module.d.ts +2 -0
  55. package/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.d.ts +1 -1
  56. package/lib/_services/certificate.service.d.ts +8 -0
  57. package/package.json +1 -1
  58. package/public-api.d.ts +1 -0
  59. package/sunbird-cb-consumption.d.ts +32 -24
  60. package/sunbird-cb-consumption.metadata.json +1 -1
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component, HostBinding, Input } from '@angular/core';
6
+ var ContentProgressComponent = /** @class */ (function () {
7
+ function ContentProgressComponent() {
8
+ this.contentId = '';
9
+ this.progress = 0;
10
+ this.progressType = '';
11
+ this.forPreview = false;
12
+ this.className = '';
13
+ this.customClassName = 'accent-progress';
14
+ this.rendom = Math.random();
15
+ this.id = "progress_" + Math.random();
16
+ if (this.contentId) {
17
+ this.id = this.contentId;
18
+ }
19
+ }
20
+ /**
21
+ * @return {?}
22
+ */
23
+ ContentProgressComponent.prototype.ngOnChanges = /**
24
+ * @return {?}
25
+ */
26
+ function () {
27
+ if (this.contentId && !this.progress && !this.forPreview) {
28
+ // this.progressSvc.getProgressFor(this.contentId).subscribe(data => {
29
+ // this.progress = data
30
+ // if (this.progress) {
31
+ // this.progress = Math.round(this.progress * 10000) / 100
32
+ // }
33
+ // })
34
+ }
35
+ if (this.progress) {
36
+ if (this.progressType === 'percentage') {
37
+ this.progress = this.progress;
38
+ }
39
+ else {
40
+ this.progress = Math.round(this.progress * 10000) / 100;
41
+ }
42
+ }
43
+ };
44
+ ContentProgressComponent.decorators = [
45
+ { type: Component, args: [{
46
+ selector: 'sb-uic-content-progress',
47
+ template: "<mat-progress-bar [mode]=\"'determinate'\" [matTooltip]=\"progress + ' %'\" [value]=\"progress\" class=\"new-w content-progress {{customClassName}}\"\n [attr.aria-labelledby]=\"'m-c-'+ contentId\" [ngClass]=\"{ 'visibility-0': progress === undefined, 'thick': className}\"\n i18n-aria-label> {{ progress }} % </mat-progress-bar>",
48
+ /* tslint:disable */
49
+ host: {
50
+ // Sets the role for this component to "progressbar"
51
+ role: 'progressbar',
52
+ // Sets the minimum and maximum values for the progressbar role.
53
+ 'aria-valuemin': '0',
54
+ 'aria-valuemax': '100',
55
+ 'title': 'progres',
56
+ // Binding that updates the current value of the progressbar.
57
+ '[attr.aria-valuenow]': 'progress',
58
+ },
59
+ styles: [".visibility-0{display:none}::ng-deep.mat-progress-bar.thick{height:10px}::ng-deep.theme-igot.day-mode .mat-progress-bar-fill::after{background:no-repeat padding-box #34d6a4}::ng-deep.theme-igot.day-mode .mat-progress-bar-background{fill:rgba(0,0,0,.001)!important}::ng-deep.theme-igot.day-mode .mat-progress-bar-buffer{background-color:rgba(0,0,0,.1)!important}::ng-deep .content-progress .mat-progress-bar-fill::after{background:#f69953!important}::ng-deep.theme-igot.day-mode .viewer-progress .mat-progress-bar-background{fill:rgba(0,0,0,.1)!important}::ng-deep.theme-igot.day-mode .viewer-progress .mat-progress-bar-buffer{background-color:rgba(0,0,0,.1)!important}::ng-deep.mat-progress-bar.viewer-progress{height:4px;border-radius:5px}"]
60
+ }] }
61
+ ];
62
+ /** @nocollapse */
63
+ ContentProgressComponent.ctorParameters = function () { return []; };
64
+ ContentProgressComponent.propDecorators = {
65
+ contentId: [{ type: Input }],
66
+ progress: [{ type: Input }],
67
+ progressType: [{ type: Input }],
68
+ forPreview: [{ type: Input }],
69
+ className: [{ type: Input }],
70
+ customClassName: [{ type: Input }],
71
+ id: [{ type: HostBinding, args: ['id',] }]
72
+ };
73
+ return ContentProgressComponent;
74
+ }());
75
+ export { ContentProgressComponent };
76
+ if (false) {
77
+ /** @type {?} */
78
+ ContentProgressComponent.prototype.contentId;
79
+ /** @type {?} */
80
+ ContentProgressComponent.prototype.progress;
81
+ /** @type {?} */
82
+ ContentProgressComponent.prototype.progressType;
83
+ /** @type {?} */
84
+ ContentProgressComponent.prototype.forPreview;
85
+ /** @type {?} */
86
+ ContentProgressComponent.prototype.className;
87
+ /** @type {?} */
88
+ ContentProgressComponent.prototype.customClassName;
89
+ /** @type {?} */
90
+ ContentProgressComponent.prototype.rendom;
91
+ /** @type {?} */
92
+ ContentProgressComponent.prototype.id;
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wcm9ncmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi9jb25zdW1wdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9fY29tbW9uL2NvbnRlbnQtcHJvZ3Jlc3MvY29udGVudC1wcm9ncmVzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUV4RTtJQXNDRTtRQW5CQSxjQUFTLEdBQUcsRUFBRSxDQUFBO1FBR2QsYUFBUSxHQUFHLENBQUMsQ0FBQTtRQUdaLGlCQUFZLEdBQUcsRUFBRSxDQUFBO1FBR2pCLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFHbEIsY0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVkLG9CQUFlLEdBQVEsaUJBQWlCLENBQUE7UUFFeEMsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUVmLE9BQUUsR0FBRyxjQUFZLElBQUksQ0FBQyxNQUFNLEVBQUksQ0FBQTtRQUlyQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQ3pCO0lBQ0gsQ0FBQzs7OztJQUVELDhDQUFXOzs7SUFBWDtRQUNFLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3hELHNFQUFzRTtZQUN0RSx5QkFBeUI7WUFDekIseUJBQXlCO1lBQ3pCLDhEQUE4RDtZQUM5RCxNQUFNO1lBQ04sS0FBSztTQUNOO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTthQUM5QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUE7YUFDeEQ7U0FDRjtJQUNILENBQUM7O2dCQS9ERixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsc1ZBQWdEOztvQkFHaEQsSUFBSSxFQUFFOzt3QkFFSixJQUFJLEVBQUUsYUFBYTs7d0JBRW5CLGVBQWUsRUFBRSxHQUFHO3dCQUNwQixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsT0FBTyxFQUFFLFNBQVM7O3dCQUVsQixzQkFBc0IsRUFBRSxVQUFVO3FCQUNuQzs7aUJBRUY7Ozs7OzRCQUVFLEtBQUs7MkJBR0wsS0FBSzsrQkFHTCxLQUFLOzZCQUdMLEtBQUs7NEJBR0wsS0FBSztrQ0FFTCxLQUFLO3FCQUlMLFdBQVcsU0FBQyxJQUFJOztJQTRCbkIsK0JBQUM7Q0FBQSxBQWhFRCxJQWdFQztTQS9DWSx3QkFBd0I7OztJQUNuQyw2Q0FDYzs7SUFFZCw0Q0FDWTs7SUFFWixnREFDaUI7O0lBRWpCLDhDQUNrQjs7SUFFbEIsNkNBQ2M7O0lBQ2QsbURBQ3dDOztJQUV4QywwQ0FBc0I7O0lBQ3RCLHNDQUN1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYi11aWMtY29udGVudC1wcm9ncmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXByb2dyZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1wcm9ncmVzcy5jb21wb25lbnQuc2NzcyddLFxuICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICBob3N0OiB7XG4gICAgLy8gU2V0cyB0aGUgcm9sZSBmb3IgdGhpcyBjb21wb25lbnQgdG8gXCJwcm9ncmVzc2JhclwiXG4gICAgcm9sZTogJ3Byb2dyZXNzYmFyJyxcbiAgICAvLyBTZXRzIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBmb3IgdGhlIHByb2dyZXNzYmFyIHJvbGUuXG4gICAgJ2FyaWEtdmFsdWVtaW4nOiAnMCcsXG4gICAgJ2FyaWEtdmFsdWVtYXgnOiAnMTAwJyxcbiAgICAndGl0bGUnOiAncHJvZ3JlcycsXG4gICAgLy8gQmluZGluZyB0aGF0IHVwZGF0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHByb2dyZXNzYmFyLlxuICAgICdbYXR0ci5hcmlhLXZhbHVlbm93XSc6ICdwcm9ncmVzcycsXG4gIH0sXG4gIC8qIHRzbGludDplbmFibGUgKi9cbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFByb2dyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgY29udGVudElkID0gJydcblxuICBASW5wdXQoKVxuICBwcm9ncmVzcyA9IDBcblxuICBASW5wdXQoKVxuICBwcm9ncmVzc1R5cGUgPSAnJ1xuXG4gIEBJbnB1dCgpXG4gIGZvclByZXZpZXcgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGNsYXNzTmFtZSA9ICcnXG4gIEBJbnB1dCgpXG4gIGN1c3RvbUNsYXNzTmFtZTogYW55ID0gJ2FjY2VudC1wcm9ncmVzcydcblxuICByZW5kb20gPSBNYXRoLnJhbmRvbSgpXG4gIEBIb3N0QmluZGluZygnaWQnKVxuICBwdWJsaWMgaWQgPSBgcHJvZ3Jlc3NfJHtNYXRoLnJhbmRvbSgpfWBcbiAgY29uc3RydWN0b3IoXG4gICAgLy8gcHJpdmF0ZSBwcm9ncmVzc1N2YzogQ29udGVudFByb2dyZXNzU2VydmljZVxuICAgICkge1xuICAgIGlmICh0aGlzLmNvbnRlbnRJZCkge1xuICAgICAgdGhpcy5pZCA9IHRoaXMuY29udGVudElkXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudElkICYmICF0aGlzLnByb2dyZXNzICYmICF0aGlzLmZvclByZXZpZXcpIHtcbiAgICAgIC8vIHRoaXMucHJvZ3Jlc3NTdmMuZ2V0UHJvZ3Jlc3NGb3IodGhpcy5jb250ZW50SWQpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIC8vICAgdGhpcy5wcm9ncmVzcyA9IGRhdGFcbiAgICAgIC8vICAgaWYgKHRoaXMucHJvZ3Jlc3MpIHtcbiAgICAgIC8vICAgICB0aGlzLnByb2dyZXNzID0gTWF0aC5yb3VuZCh0aGlzLnByb2dyZXNzICogMTAwMDApIC8gMTAwXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvZ3Jlc3MpIHtcbiAgICAgIGlmICh0aGlzLnByb2dyZXNzVHlwZSA9PT0gJ3BlcmNlbnRhZ2UnKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnByb2dyZXNzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gTWF0aC5yb3VuZCh0aGlzLnByb2dyZXNzICogMTAwMDApIC8gMTAwXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { NgModule } from '@angular/core';
6
+ import { CommonModule } from '@angular/common';
7
+ import { ContentProgressComponent } from './content-progress.component';
8
+ import { MatProgressBarModule, MatTooltipModule } from '@angular/material';
9
+ var ContentProgressModule = /** @class */ (function () {
10
+ function ContentProgressModule() {
11
+ }
12
+ ContentProgressModule.decorators = [
13
+ { type: NgModule, args: [{
14
+ declarations: [ContentProgressComponent],
15
+ imports: [
16
+ CommonModule,
17
+ MatProgressBarModule,
18
+ MatTooltipModule,
19
+ ],
20
+ exports: [ContentProgressComponent],
21
+ },] }
22
+ ];
23
+ return ContentProgressModule;
24
+ }());
25
+ export { ContentProgressModule };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wcm9ncmVzcy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi9jb25zdW1wdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9fY29tbW9uL2NvbnRlbnQtcHJvZ3Jlc3MvY29udGVudC1wcm9ncmVzcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTFFO0lBQUE7SUFTcUMsQ0FBQzs7Z0JBVHJDLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDeEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUNwQzs7SUFDb0MsNEJBQUM7Q0FBQSxBQVR0QyxJQVNzQztTQUF6QixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBDb250ZW50UHJvZ3Jlc3NDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQtcHJvZ3Jlc3MuY29tcG9uZW50J1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ29udGVudFByb2dyZXNzQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbQ29udGVudFByb2dyZXNzQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFByb2dyZXNzTW9kdWxlIHsgfVxuIl19