@matechat/ng 0.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/Base/base.component.d.ts +11 -0
  2. package/Bubble/avatar/avatar.component.d.ts +23 -0
  3. package/Bubble/avatar-body-icon/avatar-body-icon.component.d.ts +7 -0
  4. package/Bubble/avatar-no-body-icon/avatar-no-body-icon.component.d.ts +7 -0
  5. package/Bubble/bubble-loading/bubble-loading.component.d.ts +5 -0
  6. package/Bubble/bubble.component.d.ts +24 -0
  7. package/Bubble/bubble.module.d.ts +10 -0
  8. package/Bubble/index.d.ts +6 -0
  9. package/Input/button/button.component.d.ts +31 -0
  10. package/Input/index.d.ts +2 -0
  11. package/Input/input.component.d.ts +56 -0
  12. package/Input/input.module.d.ts +11 -0
  13. package/Input/send-icon/send-icon.component.d.ts +5 -0
  14. package/Locale/index.d.ts +5 -0
  15. package/Locale/locale.module.d.ts +17 -0
  16. package/Locale/locale.service.d.ts +50 -0
  17. package/Locale/translate.pipe.d.ts +23 -0
  18. package/README.md +24 -0
  19. package/components-common/Base/foundation.d.ts +43 -0
  20. package/components-common/Bubble/common/bubble-constants.d.ts +4 -0
  21. package/components-common/Bubble/common/bubble-types.d.ts +12 -0
  22. package/components-common/Bubble/foundation.d.ts +9 -0
  23. package/components-common/Input/button-foundation.d.ts +15 -0
  24. package/components-common/Input/common/types.d.ts +16 -0
  25. package/components-common/Input/foundation.d.ts +20 -0
  26. package/components-common/Locale/lang/en-us.d.ts +26 -0
  27. package/components-common/Locale/lang/zh-cn.d.ts +26 -0
  28. package/esm2022/Base/base.component.mjs +46 -0
  29. package/esm2022/Bubble/avatar/avatar.component.mjs +121 -0
  30. package/esm2022/Bubble/avatar-body-icon/avatar-body-icon.component.mjs +19 -0
  31. package/esm2022/Bubble/avatar-no-body-icon/avatar-no-body-icon.component.mjs +19 -0
  32. package/esm2022/Bubble/bubble-loading/bubble-loading.component.mjs +11 -0
  33. package/esm2022/Bubble/bubble.component.mjs +82 -0
  34. package/esm2022/Bubble/bubble.module.mjs +36 -0
  35. package/esm2022/Bubble/index.mjs +7 -0
  36. package/esm2022/Input/button/button.component.mjs +83 -0
  37. package/esm2022/Input/index.mjs +3 -0
  38. package/esm2022/Input/input.component.mjs +181 -0
  39. package/esm2022/Input/input.module.mjs +34 -0
  40. package/esm2022/Input/send-icon/send-icon.component.mjs +11 -0
  41. package/esm2022/Locale/index.mjs +6 -0
  42. package/esm2022/Locale/locale.module.mjs +39 -0
  43. package/esm2022/Locale/locale.service.mjs +140 -0
  44. package/esm2022/Locale/translate.pipe.mjs +38 -0
  45. package/esm2022/components-common/Base/foundation.mjs +63 -0
  46. package/esm2022/components-common/Bubble/common/bubble-constants.mjs +5 -0
  47. package/esm2022/components-common/Bubble/common/bubble-types.mjs +2 -0
  48. package/esm2022/components-common/Bubble/foundation.mjs +30 -0
  49. package/esm2022/components-common/Input/button-foundation.mjs +33 -0
  50. package/esm2022/components-common/Input/common/types.mjs +21 -0
  51. package/esm2022/components-common/Input/foundation.mjs +72 -0
  52. package/esm2022/components-common/Locale/lang/en-us.mjs +26 -0
  53. package/esm2022/components-common/Locale/lang/zh-cn.mjs +26 -0
  54. package/esm2022/matechat-ng.mjs +5 -0
  55. package/esm2022/public-api.mjs +7 -0
  56. package/fesm2022/matechat-ng-en-us-DsYnUbZd.mjs +28 -0
  57. package/fesm2022/matechat-ng-en-us-DsYnUbZd.mjs.map +1 -0
  58. package/fesm2022/matechat-ng-zh-cn--_YVZHnW.mjs +28 -0
  59. package/fesm2022/matechat-ng-zh-cn--_YVZHnW.mjs.map +1 -0
  60. package/fesm2022/matechat-ng.mjs +1027 -0
  61. package/fesm2022/matechat-ng.mjs.map +1 -0
  62. package/index.d.ts +5 -0
  63. package/package.json +31 -0
  64. package/public-api.d.ts +3 -0
@@ -0,0 +1,181 @@
1
+ import { Component, Input, Output, EventEmitter, ViewChild, ContentChild, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ButtonComponent } from './button/button.component';
5
+ import { DisplayType, InputVariant, SendBtnVariant, SubmitShortKey, } from '../components-common/Input/common/types';
6
+ import BaseComponent from '../Base/base.component';
7
+ import { InputFoundation, } from '../components-common/Input/foundation';
8
+ import { TranslatePipe } from '../Locale/translate.pipe';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../Locale/locale.service";
11
+ import * as i2 from "@angular/common";
12
+ import * as i3 from "@angular/forms";
13
+ // 创建一个token用于组件间通信
14
+ export const inputContextToken = 'input-context';
15
+ export class InputComponent extends BaseComponent {
16
+ constructor(localeService) {
17
+ super();
18
+ this.localeService = localeService;
19
+ this.value = '';
20
+ this.placeholder = '';
21
+ this.disabled = false;
22
+ this.displayType = DisplayType.Full;
23
+ this.variant = InputVariant.Bordered;
24
+ this.sendBtnVariant = SendBtnVariant.Full;
25
+ this.loading = false;
26
+ this.showCount = false;
27
+ this.maxLength = null;
28
+ this.submitShortKey = SubmitShortKey.Enter;
29
+ this.autofocus = false;
30
+ this.change = new EventEmitter();
31
+ this.submit = new EventEmitter();
32
+ this.cancel = new EventEmitter();
33
+ this.focus = new EventEmitter();
34
+ this.blur = new EventEmitter();
35
+ this.headTemplate = null;
36
+ this.prefixTemplate = null;
37
+ this.suffixTemplate = null;
38
+ this.buttonTemplate = null;
39
+ this.extraTemplate = null;
40
+ this.inputValue = '';
41
+ this.lock = false;
42
+ }
43
+ ngOnInit() {
44
+ this.foundation = new InputFoundation(this.adapter);
45
+ this.foundation.init();
46
+ this.inputValue = this.value;
47
+ }
48
+ get adapter() {
49
+ return {
50
+ ...super.adapter,
51
+ locale: (key, params) => this.localeService.translate(key, params),
52
+ emitChange: () => {
53
+ this.change.emit(this.inputValue);
54
+ },
55
+ submit: (inputValue) => {
56
+ this.submit.emit(inputValue);
57
+ },
58
+ };
59
+ }
60
+ onChange(e) {
61
+ e.stopPropagation();
62
+ this.foundation.emitChange();
63
+ }
64
+ ngOnChanges(changes) {
65
+ if (changes['value']) {
66
+ this.inputValue = changes['value']?.currentValue || '';
67
+ }
68
+ }
69
+ get inputClasses() {
70
+ return this.foundation.getInputClasses();
71
+ }
72
+ get maxlengthValue() {
73
+ return this.maxLength !== undefined ? this.maxLength : null;
74
+ }
75
+ onInput() {
76
+ if (!this.lock) {
77
+ this.foundation.emitChange();
78
+ }
79
+ }
80
+ onCompositionStart() {
81
+ this.lock = true;
82
+ }
83
+ onCompositionEnd() {
84
+ this.lock = false;
85
+ this.foundation.emitChange();
86
+ }
87
+ onKeydown(event) {
88
+ this.foundation.onKeydown(event);
89
+ }
90
+ clearInput() {
91
+ this.foundation.clearInput();
92
+ }
93
+ getInput() {
94
+ return this.inputValue;
95
+ }
96
+ // 处理button组件的事件
97
+ onButtonSubmit(value) {
98
+ this.submit.emit(value);
99
+ }
100
+ onButtonCancel() {
101
+ this.cancel.emit();
102
+ }
103
+ onButtonChange(value) {
104
+ this.inputValue = value;
105
+ this.foundation.emitChange();
106
+ }
107
+ ngAfterViewInit() {
108
+ if (this.autofocus && this.textareaElement && !this.disabled) {
109
+ // 在下一个变更检测周期中聚焦,以确保视图已经完全初始化
110
+ setTimeout(() => {
111
+ this.textareaElement.nativeElement.focus();
112
+ });
113
+ }
114
+ }
115
+ get placeholderText() {
116
+ return this.foundation.getPlaceholderText();
117
+ }
118
+ onFocus(event) {
119
+ this.focus.emit(event);
120
+ }
121
+ onBlur(event) {
122
+ this.blur.emit(event);
123
+ }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputComponent, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Component }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: InputComponent, isStandalone: true, selector: "mc-input", inputs: { value: "value", placeholder: "placeholder", disabled: "disabled", displayType: "displayType", variant: "variant", sendBtnVariant: "sendBtnVariant", loading: "loading", showCount: "showCount", maxLength: "maxLength", submitShortKey: "submitShortKey", autofocus: "autofocus" }, outputs: { change: "change", submit: "submit", cancel: "cancel", focus: "focus", blur: "blur" }, providers: [{ provide: inputContextToken, useExisting: InputComponent }], queries: [{ propertyName: "headTemplate", first: true, predicate: ["head"], descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: ["prefix"], descendants: true }, { propertyName: "suffixTemplate", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "buttonTemplate", first: true, predicate: ["button"], descendants: true }, { propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "textareaElement", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "mc-button", inputs: ["disabled", "loading", "inputValue", "sendBtnVariant"], outputs: ["submit", "cancel", "change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputComponent, decorators: [{
128
+ type: Component,
129
+ args: [{ selector: 'mc-input', standalone: true, imports: [CommonModule, FormsModule, ButtonComponent, TranslatePipe], providers: [{ provide: inputContextToken, useExisting: InputComponent }], template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"] }]
130
+ }], ctorParameters: () => [{ type: i1.LocaleService }], propDecorators: { value: [{
131
+ type: Input
132
+ }], placeholder: [{
133
+ type: Input
134
+ }], disabled: [{
135
+ type: Input
136
+ }], displayType: [{
137
+ type: Input
138
+ }], variant: [{
139
+ type: Input
140
+ }], sendBtnVariant: [{
141
+ type: Input
142
+ }], loading: [{
143
+ type: Input
144
+ }], showCount: [{
145
+ type: Input
146
+ }], maxLength: [{
147
+ type: Input
148
+ }], submitShortKey: [{
149
+ type: Input
150
+ }], autofocus: [{
151
+ type: Input
152
+ }], change: [{
153
+ type: Output
154
+ }], submit: [{
155
+ type: Output
156
+ }], cancel: [{
157
+ type: Output
158
+ }], focus: [{
159
+ type: Output
160
+ }], blur: [{
161
+ type: Output
162
+ }], textareaElement: [{
163
+ type: ViewChild,
164
+ args: ['textarea']
165
+ }], headTemplate: [{
166
+ type: ContentChild,
167
+ args: ['head']
168
+ }], prefixTemplate: [{
169
+ type: ContentChild,
170
+ args: ['prefix']
171
+ }], suffixTemplate: [{
172
+ type: ContentChild,
173
+ args: ['suffix']
174
+ }], buttonTemplate: [{
175
+ type: ContentChild,
176
+ args: ['button']
177
+ }], extraTemplate: [{
178
+ type: ContentChild,
179
+ args: ['extra']
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBRVQsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBRUwsZUFBZSxHQUNoQixNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFFekQsbUJBQW1CO0FBQ25CLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztBQVVqRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUErQi9DLFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE5QnZDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFnQixXQUFXLENB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YztzQkFBckMsWUFBWTt1QkFBQyxRQUFRO2dCQUNDLGFBQWE7c0JBQW5DLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQ29udGVudENoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERpc3BsYXlUeXBlLFxuICBJbnB1dFZhcmlhbnQsXG4gIFNlbmRCdG5WYXJpYW50LFxuICBTdWJtaXRTaG9ydEtleSxcbn0gZnJvbSAnLi4vY29tcG9uZW50cy1jb21tb24vSW5wdXQvY29tbW9uL3R5cGVzJztcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4uL0Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSW5wdXRBZGFwdGVyLFxuICBJbnB1dEZvdW5kYXRpb24sXG59IGZyb20gJy4uL2NvbXBvbmVudHMtY29tbW9uL0lucHV0L2ZvdW5kYXRpb24nO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4uL0xvY2FsZS9sb2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vTG9jYWxlL3RyYW5zbGF0ZS5waXBlJztcblxuLy8g5Yib5bu65LiA5LiqdG9rZW7nlKjkuo7nu4Tku7bpl7TpgJrkv6FcbmV4cG9ydCBjb25zdCBpbnB1dENvbnRleHRUb2tlbiA9ICdpbnB1dC1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBUcmFuc2xhdGVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBpbnB1dENvbnRleHRUb2tlbiwgdXNlRXhpc3Rpbmc6IElucHV0Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheVR5cGU6IERpc3BsYXlUeXBlID0gRGlzcGxheVR5cGUuRnVsbDtcbiAgQElucHV0KCkgdmFyaWFudDogSW5wdXRWYXJpYW50ID0gSW5wdXRWYXJpYW50LkJvcmRlcmVkO1xuICBASW5wdXQoKSBzZW5kQnRuVmFyaWFudDogU2VuZEJ0blZhcmlhbnQgPSBTZW5kQnRuVmFyaWFudC5GdWxsO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdWJtaXRTaG9ydEtleTogU3VibWl0U2hvcnRLZXkgfCBudWxsIHwgc3RyaW5nID1cbiAgICBTdWJtaXRTaG9ydEtleS5FbnRlcjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGV4dGFyZWEnKSB0ZXh0YXJlYUVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWQnKSBoZWFkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgncHJlZml4JykgcHJlZml4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnc3VmZml4Jykgc3VmZml4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnYnV0dG9uJykgYnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnZXh0cmEnKSBleHRyYVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgaW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIGxvY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3VuZGF0aW9uID0gbmV3IElucHV0Rm91bmRhdGlvbih0aGlzLmFkYXB0ZXIpO1xuICAgIHRoaXMuZm91bmRhdGlvbi5pbml0KCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBhZGFwdGVyKCk6IElucHV0QWRhcHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmFkYXB0ZXIsXG4gICAgICBsb2NhbGU6IChrZXksIHBhcmFtcykgPT4gdGhpcy5sb2NhbGVTZXJ2aWNlLnRyYW5zbGF0ZShrZXksIHBhcmFtcyksXG4gICAgICBlbWl0Q2hhbmdlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5pbnB1dFZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBzdWJtaXQ6IChpbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWl0LmVtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBvbkNoYW5nZShlKTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBjaGFuZ2VzWyd2YWx1ZSddPy5jdXJyZW50VmFsdWUgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlucHV0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvdW5kYXRpb24uZ2V0SW5wdXRDbGFzc2VzKCk7XG4gIH1cblxuICBnZXQgbWF4bGVuZ3RoVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQgPyB0aGlzLm1heExlbmd0aCA6IG51bGw7XG4gIH1cblxuICBvbklucHV0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NrKSB7XG4gICAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2sgPSB0cnVlO1xuICB9XG5cbiAgb25Db21wb3NpdGlvbkVuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2sgPSBmYWxzZTtcbiAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb3VuZGF0aW9uLm9uS2V5ZG93bihldmVudCk7XG4gIH1cblxuICBjbGVhcklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZm91bmRhdGlvbi5jbGVhcklucHV0KCk7XG4gIH1cblxuICBnZXRJbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlucHV0VmFsdWU7XG4gIH1cblxuICAvLyDlpITnkIZidXR0b27nu4Tku7bnmoTkuovku7ZcbiAgb25CdXR0b25TdWJtaXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3VibWl0LmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25CdXR0b25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25CdXR0b25DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZm91bmRhdGlvbi5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMudGV4dGFyZWFFbGVtZW50ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAvLyDlnKjkuIvkuIDkuKrlj5jmm7Tmo4DmtYvlkajmnJ/kuK3ogZrnhKbvvIzku6Xnoa7kv53op4blm77lt7Lnu4/lrozlhajliJ3lp4vljJZcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRhcmVhRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm91bmRhdGlvbi5nZXRQbGFjZWhvbGRlclRleHQoKTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICB0aGlzLmZvY3VzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5ibHVyLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZFRlbXBsYXRlOyB0aGVuIGhlYWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJtYy1pbnB1dC1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZWZpeFRlbXBsYXRlOyB0aGVuIHByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8dGV4dGFyZWFcbiAgICAgICN0ZXh0YXJlYVxuICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgIGNsYXNzPVwibWMtdGV4dGFyZWFcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbWMtdGV4dGFyZWEtc2ltcGxlJzogZGlzcGxheVR5cGUgPT09ICdzaW1wbGUnLFxuICAgICAgICAnbWMtdGV4dGFyZWEtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidJbnB1dC5hcmlhTGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXG4gICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgKGNvbXBvc2l0aW9uc3RhcnQpPVwib25Db21wb3NpdGlvblN0YXJ0KClcIlxuICAgICAgKGNvbXBvc2l0aW9uZW5kKT1cIm9uQ29tcG9zaXRpb25FbmQoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICA+PC90ZXh0YXJlYT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VmZml4VGVtcGxhdGU7IHRoZW4gc3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ3NpbXBsZSdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0QnV0dG9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvblRlbXBsYXRlOyB0aGVuIGJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XG4gICAgICAgIDxtYy1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKCFsb2FkaW5nICYmICFpbnB1dFZhbHVlKVwiXG4gICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgICAgW2lucHV0VmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gICAgICAgICAgW3NlbmRCdG5WYXJpYW50XT1cInNlbmRCdG5WYXJpYW50XCJcbiAgICAgICAgICAoc3VibWl0KT1cIm9uQnV0dG9uU3VibWl0KCRldmVudClcIlxuICAgICAgICAgIChjYW5jZWwpPVwib25CdXR0b25DYW5jZWwoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvbWMtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImRpc3BsYXlUeXBlID09PSAnZnVsbCdcIiBjbGFzcz1cIm1jLWlucHV0LWZvb3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWMtaW5wdXQtZm9vdC1sZWZ0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0cmFUZW1wbGF0ZTsgdGhlbiBleHRyYVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8c3BhbiAqbmdJZj1cInNob3dDb3VudFwiIGlkPVwibWMtaW5wdXQtY291bnRcIiBjbGFzcz1cIm1jLWlucHV0LWZvb3QtY291bnRcIj5cbiAgICAgICAge3sgaW5wdXRWYWx1ZS5sZW5ndGggfX17eyAhbWF4TGVuZ3RoID8gXCJcIiA6IFwiL1wiICsgbWF4TGVuZ3RoIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEZvb3RlckJ1dHRvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvblRlbXBsYXRlOyB0aGVuIGJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rm9vdGVyQnV0dG9uPlxuICAgICAgPG1jLWJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKCFsb2FkaW5nICYmICFpbnB1dFZhbHVlKVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbaW5wdXRWYWx1ZV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgW3NlbmRCdG5WYXJpYW50XT1cInNlbmRCdG5WYXJpYW50XCJcbiAgICAgICAgKHN1Ym1pdCk9XCJvbkJ1dHRvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGNhbmNlbCk9XCJvbkJ1dHRvbkNhbmNlbCgpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L21jLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,34 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { InputComponent } from './input.component';
3
+ import { CommonModule } from '@angular/common';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { ButtonComponent } from './button/button.component';
6
+ import { SendIconComponent } from './send-icon/send-icon.component';
7
+ import * as i0 from "@angular/core";
8
+ export class InputModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: InputModule, imports: [CommonModule,
11
+ FormsModule,
12
+ ButtonComponent,
13
+ SendIconComponent,
14
+ InputComponent], exports: [InputComponent] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputModule, imports: [CommonModule,
16
+ FormsModule,
17
+ ButtonComponent,
18
+ InputComponent] }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputModule, decorators: [{
21
+ type: NgModule,
22
+ args: [{
23
+ declarations: [],
24
+ imports: [
25
+ CommonModule,
26
+ FormsModule,
27
+ ButtonComponent,
28
+ SendIconComponent,
29
+ InputComponent
30
+ ],
31
+ exports: [InputComponent],
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQWFwRSxNQUFNLE9BQU8sV0FBVzs4R0FBWCxXQUFXOytHQUFYLFdBQVcsWUFScEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGNBQWMsYUFFTixjQUFjOytHQUViLFdBQVcsWUFScEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBRWYsY0FBYzs7MkZBSUwsV0FBVztrQkFYdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZW5kSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VuZC1pY29uL3NlbmQtaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTZW5kSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSW5wdXRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,11 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SendIconComponent {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SendIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: SendIconComponent, isStandalone: true, selector: "mc-send-icon", ngImport: i0, template: "<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M13.5105149,2.56164948 C14.1211149,2.35546948 14.7829149,2.68328948 14.9892149,3.29376948 C15.0349149,3.42925948 15.0552149,3.57159948 15.0495149,3.71368948 L15.0495149,3.71368948 L15.0351149,3.85546948 L13.6575149,12.2717195 C13.5237149,13.0892195 12.7524149,13.6435195 11.9348149,13.5097195 C11.8542149,13.4965195 11.7751149,13.4768195 11.6980149,13.4508195 L11.6980149,13.4508195 L11.5840149,13.4071195 L9.3049349,12.4260195 L8.4482449,13.5422195 C8.1958049,13.8708195 7.8205549,14.0786195 7.4128449,14.1207195 L7.4128449,14.1207195 L7.2585449,14.1286195 C6.4787649,14.1286195 5.8381349,13.5337195 5.7653849,12.7731195 L5.7653849,12.7731195 L5.7585449,12.6286195 L5.7602549,10.5258195 L5.7756349,10.4384195 L5.7944349,10.3824195 L5.8266649,10.3168995 L5.8735349,10.2503695 L5.9177249,10.2039195 L12.6909149,3.89392948 L2.3403349,7.38903948 C2.2329149,7.42529948 2.1418449,7.49676948 2.0808149,7.59063948 L2.0808149,7.59063948 L2.0412649,7.66497948 C1.9440949,7.89044948 2.0258749,8.14788948 2.2236349,8.27917948 L2.2236349,8.27917948 L2.3029749,8.32214948 L4.4799849,9.26177948 C4.7333949,9.37121948 4.8503449,9.66546948 4.7409649,9.91894948 C4.6435549,10.1443495 4.4003949,10.2616595 4.1694349,10.2081295 L4.1694349,10.2081295 L4.0837449,10.1798795 L1.9072249,9.24047948 C1.1462449,8.91284948 0.795166898,8.03039948 1.1225549,7.26953948 C1.2700249,6.92755948 1.5380849,6.65435948 1.8730449,6.50018948 L1.8730449,6.50018948 L2.0205049,6.44158948 Z M6.7578149,11.3299195 L6.7585449,12.6286195 L6.7666013,12.7185103 C6.80894095,12.9517898 7.0131049,13.1286195 7.2585449,13.1286195 C7.3828149,13.1286195 7.5014649,13.0824195 7.5925349,13.0008195 L7.5925349,13.0008195 L7.6550349,12.9332195 L8.3569349,12.0179195 L6.7578149,11.3299195 Z M13.9888149,4.05090948 L7.1599149,10.4129195 L11.9795149,12.4886195 C11.9980149,12.4966195 12.0173149,12.5035195 12.0369149,12.5093195 L12.0369149,12.5093195 L12.0964149,12.5228195 C12.3386149,12.5624195 12.5686149,12.4209195 12.6482149,12.1975195 L12.6482149,12.1975195 L12.6706149,12.1101195 L13.9888149,4.05090948 Z\"\n ></path>\n </g>\n</svg>\n", styles: [":host{display:contents}:host svg{margin-right:4px}\n"] }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SendIconComponent, decorators: [{
8
+ type: Component,
9
+ args: [{ selector: 'mc-send-icon', standalone: true, template: "<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M13.5105149,2.56164948 C14.1211149,2.35546948 14.7829149,2.68328948 14.9892149,3.29376948 C15.0349149,3.42925948 15.0552149,3.57159948 15.0495149,3.71368948 L15.0495149,3.71368948 L15.0351149,3.85546948 L13.6575149,12.2717195 C13.5237149,13.0892195 12.7524149,13.6435195 11.9348149,13.5097195 C11.8542149,13.4965195 11.7751149,13.4768195 11.6980149,13.4508195 L11.6980149,13.4508195 L11.5840149,13.4071195 L9.3049349,12.4260195 L8.4482449,13.5422195 C8.1958049,13.8708195 7.8205549,14.0786195 7.4128449,14.1207195 L7.4128449,14.1207195 L7.2585449,14.1286195 C6.4787649,14.1286195 5.8381349,13.5337195 5.7653849,12.7731195 L5.7653849,12.7731195 L5.7585449,12.6286195 L5.7602549,10.5258195 L5.7756349,10.4384195 L5.7944349,10.3824195 L5.8266649,10.3168995 L5.8735349,10.2503695 L5.9177249,10.2039195 L12.6909149,3.89392948 L2.3403349,7.38903948 C2.2329149,7.42529948 2.1418449,7.49676948 2.0808149,7.59063948 L2.0808149,7.59063948 L2.0412649,7.66497948 C1.9440949,7.89044948 2.0258749,8.14788948 2.2236349,8.27917948 L2.2236349,8.27917948 L2.3029749,8.32214948 L4.4799849,9.26177948 C4.7333949,9.37121948 4.8503449,9.66546948 4.7409649,9.91894948 C4.6435549,10.1443495 4.4003949,10.2616595 4.1694349,10.2081295 L4.1694349,10.2081295 L4.0837449,10.1798795 L1.9072249,9.24047948 C1.1462449,8.91284948 0.795166898,8.03039948 1.1225549,7.26953948 C1.2700249,6.92755948 1.5380849,6.65435948 1.8730449,6.50018948 L1.8730449,6.50018948 L2.0205049,6.44158948 Z M6.7578149,11.3299195 L6.7585449,12.6286195 L6.7666013,12.7185103 C6.80894095,12.9517898 7.0131049,13.1286195 7.2585449,13.1286195 C7.3828149,13.1286195 7.5014649,13.0824195 7.5925349,13.0008195 L7.5925349,13.0008195 L7.6550349,12.9332195 L8.3569349,12.0179195 L6.7578149,11.3299195 Z M13.9888149,4.05090948 L7.1599149,10.4129195 L11.9795149,12.4886195 C11.9980149,12.4966195 12.0173149,12.5035195 12.0369149,12.5093195 L12.0369149,12.5093195 L12.0964149,12.5228195 C12.3386149,12.5624195 12.5686149,12.4209195 12.6482149,12.1975195 L12.6482149,12.1975195 L12.6706149,12.1101195 L13.9888149,4.05090948 Z\"\n ></path>\n </g>\n</svg>\n", styles: [":host{display:contents}:host svg{margin-right:4px}\n"] }]
10
+ }] });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0lucHV0L3NlbmQtaWNvbi9zZW5kLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvc2VuZC1pY29uL3NlbmQtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVExQyxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7a0dBQWpCLGlCQUFpQix3RUNSOUIsK3dFQWFBOzsyRkRMYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtc2VuZC1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbmQtaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbmQtaWNvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbmRJY29uQ29tcG9uZW50IHtcblxufSIsIjxzdmdcbiAgd2lkdGg9XCIxNnB4XCJcbiAgaGVpZ2h0PVwiMTZweFwiXG4gIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICB2ZXJzaW9uPVwiMS4xXCJcbiAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4+XG4gIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIxXCIgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTMuNTEwNTE0OSwyLjU2MTY0OTQ4IEMxNC4xMjExMTQ5LDIuMzU1NDY5NDggMTQuNzgyOTE0OSwyLjY4MzI4OTQ4IDE0Ljk4OTIxNDksMy4yOTM3Njk0OCBDMTUuMDM0OTE0OSwzLjQyOTI1OTQ4IDE1LjA1NTIxNDksMy41NzE1OTk0OCAxNS4wNDk1MTQ5LDMuNzEzNjg5NDggTDE1LjA0OTUxNDksMy43MTM2ODk0OCBMMTUuMDM1MTE0OSwzLjg1NTQ2OTQ4IEwxMy42NTc1MTQ5LDEyLjI3MTcxOTUgQzEzLjUyMzcxNDksMTMuMDg5MjE5NSAxMi43NTI0MTQ5LDEzLjY0MzUxOTUgMTEuOTM0ODE0OSwxMy41MDk3MTk1IEMxMS44NTQyMTQ5LDEzLjQ5NjUxOTUgMTEuNzc1MTE0OSwxMy40NzY4MTk1IDExLjY5ODAxNDksMTMuNDUwODE5NSBMMTEuNjk4MDE0OSwxMy40NTA4MTk1IEwxMS41ODQwMTQ5LDEzLjQwNzExOTUgTDkuMzA0OTM0OSwxMi40MjYwMTk1IEw4LjQ0ODI0NDksMTMuNTQyMjE5NSBDOC4xOTU4MDQ5LDEzLjg3MDgxOTUgNy44MjA1NTQ5LDE0LjA3ODYxOTUgNy40MTI4NDQ5LDE0LjEyMDcxOTUgTDcuNDEyODQ0OSwxNC4xMjA3MTk1IEw3LjI1ODU0NDksMTQuMTI4NjE5NSBDNi40Nzg3NjQ5LDE0LjEyODYxOTUgNS44MzgxMzQ5LDEzLjUzMzcxOTUgNS43NjUzODQ5LDEyLjc3MzExOTUgTDUuNzY1Mzg0OSwxMi43NzMxMTk1IEw1Ljc1ODU0NDksMTIuNjI4NjE5NSBMNS43NjAyNTQ5LDEwLjUyNTgxOTUgTDUuNzc1NjM0OSwxMC40Mzg0MTk1IEw1Ljc5NDQzNDksMTAuMzgyNDE5NSBMNS44MjY2NjQ5LDEwLjMxNjg5OTUgTDUuODczNTM0OSwxMC4yNTAzNjk1IEw1LjkxNzcyNDksMTAuMjAzOTE5NSBMMTIuNjkwOTE0OSwzLjg5MzkyOTQ4IEwyLjM0MDMzNDksNy4zODkwMzk0OCBDMi4yMzI5MTQ5LDcuNDI1Mjk5NDggMi4xNDE4NDQ5LDcuNDk2NzY5NDggMi4wODA4MTQ5LDcuNTkwNjM5NDggTDIuMDgwODE0OSw3LjU5MDYzOTQ4IEwyLjA0MTI2NDksNy42NjQ5Nzk0OCBDMS45NDQwOTQ5LDcuODkwNDQ5NDggMi4wMjU4NzQ5LDguMTQ3ODg5NDggMi4yMjM2MzQ5LDguMjc5MTc5NDggTDIuMjIzNjM0OSw4LjI3OTE3OTQ4IEwyLjMwMjk3NDksOC4zMjIxNDk0OCBMNC40Nzk5ODQ5LDkuMjYxNzc5NDggQzQuNzMzMzk0OSw5LjM3MTIxOTQ4IDQuODUwMzQ0OSw5LjY2NTQ2OTQ4IDQuNzQwOTY0OSw5LjkxODk0OTQ4IEM0LjY0MzU1NDksMTAuMTQ0MzQ5NSA0LjQwMDM5NDksMTAuMjYxNjU5NSA0LjE2OTQzNDksMTAuMjA4MTI5NSBMNC4xNjk0MzQ5LDEwLjIwODEyOTUgTDQuMDgzNzQ0OSwxMC4xNzk4Nzk1IEwxLjkwNzIyNDksOS4yNDA0Nzk0OCBDMS4xNDYyNDQ5LDguOTEyODQ5NDggMC43OTUxNjY4OTgsOC4wMzAzOTk0OCAxLjEyMjU1NDksNy4yNjk1Mzk0OCBDMS4yNzAwMjQ5LDYuOTI3NTU5NDggMS41MzgwODQ5LDYuNjU0MzU5NDggMS44NzMwNDQ5LDYuNTAwMTg5NDggTDEuODczMDQ0OSw2LjUwMDE4OTQ4IEwyLjAyMDUwNDksNi40NDE1ODk0OCBaIE02Ljc1NzgxNDksMTEuMzI5OTE5NSBMNi43NTg1NDQ5LDEyLjYyODYxOTUgTDYuNzY2NjAxMywxMi43MTg1MTAzIEM2LjgwODk0MDk1LDEyLjk1MTc4OTggNy4wMTMxMDQ5LDEzLjEyODYxOTUgNy4yNTg1NDQ5LDEzLjEyODYxOTUgQzcuMzgyODE0OSwxMy4xMjg2MTk1IDcuNTAxNDY0OSwxMy4wODI0MTk1IDcuNTkyNTM0OSwxMy4wMDA4MTk1IEw3LjU5MjUzNDksMTMuMDAwODE5NSBMNy42NTUwMzQ5LDEyLjkzMzIxOTUgTDguMzU2OTM0OSwxMi4wMTc5MTk1IEw2Ljc1NzgxNDksMTEuMzI5OTE5NSBaIE0xMy45ODg4MTQ5LDQuMDUwOTA5NDggTDcuMTU5OTE0OSwxMC40MTI5MTk1IEwxMS45Nzk1MTQ5LDEyLjQ4ODYxOTUgQzExLjk5ODAxNDksMTIuNDk2NjE5NSAxMi4wMTczMTQ5LDEyLjUwMzUxOTUgMTIuMDM2OTE0OSwxMi41MDkzMTk1IEwxMi4wMzY5MTQ5LDEyLjUwOTMxOTUgTDEyLjA5NjQxNDksMTIuNTIyODE5NSBDMTIuMzM4NjE0OSwxMi41NjI0MTk1IDEyLjU2ODYxNDksMTIuNDIwOTE5NSAxMi42NDgyMTQ5LDEyLjE5NzUxOTUgTDEyLjY0ODIxNDksMTIuMTk3NTE5NSBMMTIuNjcwNjE0OSwxMi4xMTAxMTk1IEwxMy45ODg4MTQ5LDQuMDUwOTA5NDggWlwiXG4gICAgPjwvcGF0aD5cbiAgPC9nPlxuPC9zdmc+XG4iXX0=
@@ -0,0 +1,6 @@
1
+ // 导出Locale服务
2
+ import { LocaleService } from './locale.service';
3
+ import { LocaleModule } from './locale.module';
4
+ import { TranslatePipe } from './translate.pipe';
5
+ export { LocaleService, LocaleModule, TranslatePipe };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS2pELE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5a+85Ye6TG9jYWxl5pyN5YqhXG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbGVNb2R1bGUgfSBmcm9tICcuL2xvY2FsZS5tb2R1bGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vdHJhbnNsYXRlLnBpcGUnO1xuXG4vLyDph43mlrDlr7zlh7rnsbvlnotcbmV4cG9ydCB0eXBlIHsgTGFuZ3VhZ2VDb2RlLCBMb2NhbGVEYXRhIH0gZnJvbSAnLi9sb2NhbGUuc2VydmljZSc7XG5cbmV4cG9ydCB7XG4gIExvY2FsZVNlcnZpY2UsXG4gIExvY2FsZU1vZHVsZSxcbiAgVHJhbnNsYXRlUGlwZVxufTsiXX0=
@@ -0,0 +1,39 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { LocaleService } from './locale.service';
3
+ import * as i0 from "@angular/core";
4
+ export class LocaleModule {
5
+ /**
6
+ * 静态方法,用于配置模块并提供服务
7
+ * 可以在AppModule中使用LocaleModule.forRoot()来初始化
8
+ */
9
+ static forRoot() {
10
+ return {
11
+ ngModule: LocaleModule,
12
+ providers: [
13
+ LocaleService
14
+ ]
15
+ };
16
+ }
17
+ /**
18
+ * 普通导入方法,用于特性模块中导入
19
+ * 避免服务被多次实例化
20
+ */
21
+ static forChild() {
22
+ return {
23
+ ngModule: LocaleModule,
24
+ providers: [] // 子模块不提供服务实例
25
+ };
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
28
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule }); }
29
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [],
35
+ imports: [],
36
+ exports: []
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0xvY2FsZS9sb2NhbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLFlBQVk7SUFDdkI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFO2dCQUNULGFBQWE7YUFDZDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxhQUFhO1NBQzVCLENBQUM7SUFDSixDQUFDOzhHQXZCVSxZQUFZOytHQUFaLFlBQVk7K0dBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4vbG9jYWxlLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlTW9kdWxlIHtcbiAgLyoqXG4gICAqIOmdmeaAgeaWueazle+8jOeUqOS6jumFjee9ruaooeWdl+W5tuaPkOS+m+acjeWKoVxuICAgKiDlj6/ku6XlnKhBcHBNb2R1bGXkuK3kvb/nlKhMb2NhbGVNb2R1bGUuZm9yUm9vdCgp5p2l5Yid5aeL5YyWXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExvY2FsZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTG9jYWxlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIExvY2FsZVNlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOaZrumAmuWvvOWFpeaWueazle+8jOeUqOS6jueJueaAp+aooeWdl+S4reWvvOWFpVxuICAgKiDpgb/lhY3mnI3liqHooqvlpJrmrKHlrp7kvovljJZcbiAgICovXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExvY2FsZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTG9jYWxlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXSAvLyDlrZDmqKHlnZfkuI3mj5DkvpvmnI3liqHlrp7kvotcbiAgICB9O1xuICB9XG59Il19
@@ -0,0 +1,140 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class LocaleService {
5
+ constructor() {
6
+ // 当前语言
7
+ this._currentLanguage = 'zh-cn';
8
+ // 语言包存储
9
+ this._localeData = new Map();
10
+ // 语言变更通知
11
+ this._languageChange = new Subject();
12
+ // 公开语言变更Observable
13
+ this.languageChange$ = this._languageChange.asObservable();
14
+ // 首先尝试从localStorage获取语言设置
15
+ const savedLang = localStorage.getItem('lang');
16
+ if (savedLang) {
17
+ this._currentLanguage = savedLang;
18
+ }
19
+ // 初始化默认语言包
20
+ this.loadDefaultLocales();
21
+ }
22
+ /**
23
+ * 加载默认语言包
24
+ */
25
+ async loadDefaultLocales() {
26
+ try {
27
+ // 动态导入默认语言包
28
+ const zhCN = await import('../components-common/Locale/lang/zh-cn');
29
+ const enUS = await import('../components-common/Locale/lang/en-us');
30
+ this._localeData.set('zh-cn', zhCN.default);
31
+ this._localeData.set('en-us', enUS.default);
32
+ }
33
+ catch (error) {
34
+ console.error('Failed to load default locales:', error);
35
+ }
36
+ }
37
+ /**
38
+ * 设置当前语言
39
+ */
40
+ setLanguage(language) {
41
+ if (this._currentLanguage !== language) {
42
+ this._currentLanguage = language;
43
+ // 保存到localStorage
44
+ localStorage.setItem('lang', language);
45
+ this._languageChange.next(language);
46
+ }
47
+ }
48
+ /**
49
+ * 获取当前语言
50
+ */
51
+ getLanguage() {
52
+ return this._currentLanguage;
53
+ }
54
+ /**
55
+ * 翻译文本
56
+ * @param key 翻译键,支持嵌套路径如 'Input.send'
57
+ * @param params 替换参数
58
+ */
59
+ translate(key, params) {
60
+ if (!key)
61
+ return key;
62
+ // 获取当前语言的语言包
63
+ const localeData = this._localeData.get(this._currentLanguage) || {};
64
+ // 解析嵌套键
65
+ const keys = key.split('.');
66
+ let value = localeData;
67
+ for (const k of keys) {
68
+ if (value && typeof value === 'object' && k in value) {
69
+ value = value[k];
70
+ }
71
+ else {
72
+ // 如果键不存在,返回原始键
73
+ return key;
74
+ }
75
+ }
76
+ // 处理替换参数
77
+ if (typeof value === 'string' && params) {
78
+ let result = value;
79
+ for (const [paramKey, paramValue] of Object.entries(params)) {
80
+ const regex = new RegExp(`\\{${paramKey}\\}`, 'g');
81
+ result = result.replace(regex, String(paramValue));
82
+ }
83
+ return result;
84
+ }
85
+ return value;
86
+ }
87
+ /**
88
+ * 添加新的语言
89
+ */
90
+ addLanguage(language, localeData) {
91
+ this._localeData.set(language, localeData);
92
+ }
93
+ /**
94
+ * 覆盖现有语言的部分翻译
95
+ */
96
+ overrideLocale(language, localeData) {
97
+ if (this._localeData.has(language)) {
98
+ const existingLocale = this._localeData.get(language) || {};
99
+ // 深度合并语言包
100
+ const mergedLocale = this.deepMerge(existingLocale, localeData);
101
+ this._localeData.set(language, mergedLocale);
102
+ }
103
+ else {
104
+ // 如果语言不存在,则添加新语言
105
+ this.addLanguage(language, localeData);
106
+ }
107
+ }
108
+ /**
109
+ * 获取所有支持的语言
110
+ */
111
+ getSupportedLanguages() {
112
+ return Array.from(this._localeData.keys());
113
+ }
114
+ /**
115
+ * 深度合并对象
116
+ */
117
+ deepMerge(target, source) {
118
+ const result = { ...target };
119
+ for (const key in source) {
120
+ if (source.hasOwnProperty(key)) {
121
+ if (source[key] instanceof Object && key in target) {
122
+ result[key] = this.deepMerge(target[key], source[key]);
123
+ }
124
+ else {
125
+ result[key] = source[key];
126
+ }
127
+ }
128
+ }
129
+ return result;
130
+ }
131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
132
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleService, providedIn: 'root' }); }
133
+ }
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleService, decorators: [{
135
+ type: Injectable,
136
+ args: [{
137
+ providedIn: 'root'
138
+ }]
139
+ }], ctorParameters: () => [] });
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvbG9jYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQWEvQixNQUFNLE9BQU8sYUFBYTtJQVV4QjtRQVRBLE9BQU87UUFDQyxxQkFBZ0IsR0FBaUIsT0FBTyxDQUFDO1FBQ2pELFFBQVE7UUFDQSxnQkFBVyxHQUFrQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9ELFNBQVM7UUFDRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3RELG1CQUFtQjtRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHcEQsMEJBQTBCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELFdBQVc7UUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQztZQUNILFlBQVk7WUFDWixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1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bXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8vIOWumuS5ieivreiogOWMheaOpeWPo1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbGVEYXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vLyDlrprkuYnmlK/mjIHnmoTor63oqIDnsbvlnotcbmV4cG9ydCB0eXBlIExhbmd1YWdlQ29kZSA9ICd6aC1jbicgfCAnZW4tdXMnIHwgc3RyaW5nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcbiAgLy8g5b2T5YmN6K+t6KiAXG4gIHByaXZhdGUgX2N1cnJlbnRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlID0gJ3poLWNuJztcbiAgLy8g6K+t6KiA5YyF5a2Y5YKoXG4gIHByaXZhdGUgX2xvY2FsZURhdGE6IE1hcDxMYW5ndWFnZUNvZGUsIExvY2FsZURhdGE+ID0gbmV3IE1hcCgpO1xuICAvLyDor63oqIDlj5jmm7TpgJrnn6VcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDaGFuZ2UgPSBuZXcgU3ViamVjdDxMYW5ndWFnZUNvZGU+KCk7XG4gIC8vIOWFrOW8gOivreiogOWPmOabtE9ic2VydmFibGVcbiAgbGFuZ3VhZ2VDaGFuZ2UkID0gdGhpcy5fbGFuZ3VhZ2VDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g6aaW5YWI5bCd6K+V5LuObG9jYWxTdG9yYWdl6I635Y+W6K+t6KiA6K6+572uXG4gICAgY29uc3Qgc2F2ZWRMYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKTtcbiAgICBpZiAoc2F2ZWRMYW5nKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBzYXZlZExhbmc7XG4gICAgfVxuICAgIFxuICAgIC8vIOWIneWni+WMlum7mOiupOivreiogOWMhVxuICAgIHRoaXMubG9hZERlZmF1bHRMb2NhbGVzKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L296buY6K6k6K+t6KiA5YyFXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGxvYWREZWZhdWx0TG9jYWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8g5Yqo5oCB5a+85YWl6buY6K6k6K+t6KiA5YyFXG4gICAgICBjb25zdCB6aENOID0gYXdhaXQgaW1wb3J0KCcuLi9jb21wb25lbnRzLWNvbW1vbi9Mb2NhbGUvbGFuZy96aC1jbicpO1xuICAgICAgY29uc3QgZW5VUyA9IGF3YWl0IGltcG9ydCgnLi4vY29tcG9uZW50cy1jb21tb24vTG9jYWxlL2xhbmcvZW4tdXMnKTtcbiAgICAgIFxuICAgICAgdGhpcy5fbG9jYWxlRGF0YS5zZXQoJ3poLWNuJywgemhDTi5kZWZhdWx0KTtcbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KCdlbi11cycsIGVuVVMuZGVmYXVsdCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGRlZmF1bHQgbG9jYWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruW9k+WJjeivreiogFxuICAgKi9cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgIT09IGxhbmd1YWdlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgIC8vIOS/neWtmOWIsGxvY2FsU3RvcmFnZVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCBsYW5ndWFnZSk7XG4gICAgICB0aGlzLl9sYW5ndWFnZUNoYW5nZS5uZXh0KGxhbmd1YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN6K+t6KiAXG4gICAqL1xuICBnZXRMYW5ndWFnZSgpOiBMYW5ndWFnZUNvZGUge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TGFuZ3VhZ2U7XG4gIH1cblxuICAvKipcbiAgICog57+76K+R5paH5pysXG4gICAqIEBwYXJhbSBrZXkg57+76K+R6ZSu77yM5pSv5oyB5bWM5aWX6Lev5b6E5aaCICdJbnB1dC5zZW5kJ1xuICAgKiBAcGFyYW0gcGFyYW1zIOabv+aNouWPguaVsFxuICAgKi9cbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9KTogc3RyaW5nIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGtleTtcblxuICAgIC8vIOiOt+WPluW9k+WJjeivreiogOeahOivreiogOWMhVxuICAgIGNvbnN0IGxvY2FsZURhdGEgPSB0aGlzLl9sb2NhbGVEYXRhLmdldCh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UpIHx8IHt9O1xuICAgIFxuICAgIC8vIOino+aekOW1jOWll+mUrlxuICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICBsZXQgdmFsdWU6IGFueSA9IGxvY2FsZURhdGE7XG4gICAgXG4gICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGsgaW4gdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOWmguaenOmUruS4jeWtmOWcqO+8jOi/lOWbnuWOn+Wni+mUrlxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOWkhOeQhuabv+aNouWPguaVsFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcykge1xuICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgZm9yIChjb25zdCBbcGFyYW1LZXksIHBhcmFtVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxceyR7cGFyYW1LZXl9XFxcXH1gLCAnZycpO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWdleCwgU3RyaW5nKHBhcmFtVmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiDmt7vliqDmlrDnmoTor63oqIBcbiAgICovXG4gIGFkZExhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZUNvZGUsIGxvY2FsZURhdGE6IExvY2FsZURhdGEpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2NhbGVEYXRhLnNldChsYW5ndWFnZSwgbG9jYWxlRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICog6KaG55uW546w5pyJ6K+t6KiA55qE6YOo5YiG57+76K+RXG4gICAqL1xuICBvdmVycmlkZUxvY2FsZShsYW5ndWFnZTogTGFuZ3VhZ2VDb2RlLCBsb2NhbGVEYXRhOiBMb2NhbGVEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvY2FsZURhdGEuaGFzKGxhbmd1YWdlKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdMb2NhbGUgPSB0aGlzLl9sb2NhbGVEYXRhLmdldChsYW5ndWFnZSkgfHwge307XG4gICAgICAvLyDmt7HluqblkIjlubbor63oqIDljIVcbiAgICAgIGNvbnN0IG1lcmdlZExvY2FsZSA9IHRoaXMuZGVlcE1lcmdlKGV4aXN0aW5nTG9jYWxlLCBsb2NhbGVEYXRhKTtcbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KGxhbmd1YWdlLCBtZXJnZWRMb2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzor63oqIDkuI3lrZjlnKjvvIzliJnmt7vliqDmlrDor63oqIBcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UobGFuZ3VhZ2UsIGxvY2FsZURhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInmlK/mjIHnmoTor63oqIBcbiAgICovXG4gIGdldFN1cHBvcnRlZExhbmd1YWdlcygpOiBMYW5ndWFnZUNvZGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbG9jYWxlRGF0YS5rZXlzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOa3seW6puWQiOW5tuWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBkZWVwTWVyZ2UodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLnRhcmdldCB9O1xuICAgIFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiBrZXkgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmRlZXBNZXJnZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Pipe, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./locale.service";
4
+ /**
5
+ * 翻译管道,用于在Angular模板中直接使用翻译功能
6
+ * 用法:{{ 'Input.send' | translate }}
7
+ * 带参数:{{ 'Input.pleaseEnterPlaceholder' | translate:{ enterKey: 'Enter', shiftEnterKey: 'Shift + Enter' } }}
8
+ */
9
+ export class TranslatePipe {
10
+ constructor(localeService) {
11
+ this.localeService = localeService;
12
+ }
13
+ /**
14
+ * 转换方法,实现PipeTransform接口
15
+ * @param key 翻译键
16
+ * @param params 替换参数
17
+ */
18
+ transform(key, params) {
19
+ if (!key)
20
+ return key;
21
+ // 调用LocaleService的翻译方法
22
+ return this.localeService.translate(key, params);
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TranslatePipe, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Pipe }); }
25
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: TranslatePipe, isStandalone: true, name: "translate", pure: false }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TranslatePipe }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TranslatePipe, decorators: [{
29
+ type: Pipe,
30
+ args: [{
31
+ name: 'translate',
32
+ pure: false, // 设置为非纯管道,以便在语言变化时自动更新视图
33
+ standalone: true // 标记为standalone,以便在standalone组件中直接使用
34
+ }]
35
+ }, {
36
+ type: Injectable
37
+ }], ctorParameters: () => [{ type: i1.LocaleService }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHaEU7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUVwRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUEyQztRQUNoRSxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRXJCLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQWJVLGFBQWE7NEdBQWIsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQU56QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsS0FBSyxFQUFFLHlCQUF5QjtvQkFDdEMsVUFBVSxFQUFFLElBQUksQ0FBQyxxQ0FBcUM7aUJBQ3ZEOztrQkFDQSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4vbG9jYWxlLnNlcnZpY2UnO1xuXG4vKipcbiAqIOe/u+ivkeeuoemBk++8jOeUqOS6juWcqEFuZ3VsYXLmqKHmnb/kuK3nm7TmjqXkvb/nlKjnv7vor5Hlip/og71cbiAqIOeUqOazle+8mnt7ICdJbnB1dC5zZW5kJyB8IHRyYW5zbGF0ZSB9fVxuICog5bim5Y+C5pWw77yae3sgJ0lucHV0LnBsZWFzZUVudGVyUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlOnsgZW50ZXJLZXk6ICdFbnRlcicsIHNoaWZ0RW50ZXJLZXk6ICdTaGlmdCArIEVudGVyJyB9IH19XG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3RyYW5zbGF0ZScsXG4gIHB1cmU6IGZhbHNlLCAvLyDorr7nva7kuLrpnZ7nuq/nrqHpgZPvvIzku6Xkvr/lnKjor63oqIDlj5jljJbml7boh6rliqjmm7TmlrDop4blm75cbiAgc3RhbmRhbG9uZTogdHJ1ZSAvLyDmoIforrDkuLpzdGFuZGFsb25l77yM5Lul5L6/5Zyoc3RhbmRhbG9uZee7hOS7tuS4reebtOaOpeS9v+eUqFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSkge31cblxuICAvKipcbiAgICog6L2s5o2i5pa55rOV77yM5a6e546wUGlwZVRyYW5zZm9ybeaOpeWPo1xuICAgKiBAcGFyYW0ga2V5IOe/u+ivkemUrlxuICAgKiBAcGFyYW0gcGFyYW1zIOabv+aNouWPguaVsFxuICAgKi9cbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nLCBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9KTogc3RyaW5nIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGtleTtcbiAgICBcbiAgICAvLyDosIPnlKhMb2NhbGVTZXJ2aWNl55qE57+76K+R5pa55rOVXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlU2VydmljZS50cmFuc2xhdGUoa2V5LCBwYXJhbXMpO1xuICB9XG59Il19
@@ -0,0 +1,63 @@
1
+ const noop = () => { };
2
+ class BaseFoundation {
3
+ static get cssClasses() {
4
+ return {};
5
+ }
6
+ static get strings() {
7
+ return {};
8
+ }
9
+ static get numbers() {
10
+ return {};
11
+ }
12
+ static get defaultAdapter() {
13
+ return {
14
+ getProp: noop,
15
+ getProps: noop,
16
+ getState: noop,
17
+ getStates: noop,
18
+ setState: noop,
19
+ getContext: noop,
20
+ getContexts: noop,
21
+ getCache: noop,
22
+ setCache: noop,
23
+ getCaches: noop,
24
+ stopPropagation: noop,
25
+ };
26
+ }
27
+ constructor(adapter) {
28
+ this._adapter = { ...BaseFoundation.defaultAdapter, ...adapter };
29
+ }
30
+ getProp(key) {
31
+ return this._adapter.getProp(key);
32
+ }
33
+ getProps() {
34
+ return this._adapter.getProps();
35
+ }
36
+ getState(key) {
37
+ return this._adapter.getState(key);
38
+ }
39
+ getStates() {
40
+ return this._adapter.getStates();
41
+ }
42
+ setState(states, cb) {
43
+ return this._adapter.setState({ ...states }, cb);
44
+ }
45
+ /* istanbul ignore next */
46
+ getCaches() {
47
+ return this._adapter.getCaches();
48
+ }
49
+ getCache(key) {
50
+ return this._adapter.getCache(key);
51
+ }
52
+ setCache(key, value) {
53
+ return key && this._adapter.setCache(key, value);
54
+ }
55
+ _isInProps(key) {
56
+ const props = this.getProps();
57
+ return key in props;
58
+ }
59
+ init(lifecycle) { }
60
+ destroy() { }
61
+ }
62
+ export default BaseFoundation;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm91bmRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL2NvbXBvbmVudHMtY29tbW9uL0Jhc2UvZm91bmRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFjdEIsTUFBTSxjQUFjO0lBQ2xCLE1BQU0sS0FBSyxVQUFVO1FBQ25CLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sS0FBSyxjQUFjO1FBQ3ZCLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLElBQUk7WUFDaEIsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFJRCxZQUFZLE9BQVU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVyxFQUFFLEVBQTJCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQzlCLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFLLEtBQWEsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQWUsSUFBRyxDQUFDO0lBRXhCLE9BQU8sS0FBSSxDQUFDO0NBQ2I7QUFDRCxlQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbmV4cG9ydCB0eXBlIG5vb3BGdW5jdGlvbiA9ICguLi5hcmdzOiBhbnkpID0+IGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0QWRhcHRlciB7XG4gIGdldFByb3Aoa2V5OiBzdHJpbmcpOiBhbnk7XG4gIGdldFByb3BzKCk6IGFueTtcbiAgZ2V0U3RhdGUoa2V5OiBzdHJpbmcpOiBhbnk7XG4gIGdldFN0YXRlcygpOiBhbnk7XG4gIHNldFN0YXRlKHM6IGFueSwgY2FsbGJhY2s/OiBhbnkpOiB2b2lkO1xuICBnZXRDYWNoZShjOiBzdHJpbmcpOiBhbnk7XG4gIGdldENhY2hlcygpOiBhbnk7XG4gIHNldENhY2hlKGtleTogYW55LCB2YWx1ZTogYW55KTogdm9pZDtcbn1cblxuY2xhc3MgQmFzZUZvdW5kYXRpb248VCBleHRlbmRzIERlZmF1bHRBZGFwdGVyPiB7XG4gIHN0YXRpYyBnZXQgY3NzQ2xhc3NlcygpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0cmluZ3MoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgc3RhdGljIGdldCBudW1iZXJzKCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdEFkYXB0ZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFByb3A6IG5vb3AsXG4gICAgICBnZXRQcm9wczogbm9vcCxcbiAgICAgIGdldFN0YXRlOiBub29wLFxuICAgICAgZ2V0U3RhdGVzOiBub29wLFxuICAgICAgc2V0U3RhdGU6IG5vb3AsXG4gICAgICBnZXRDb250ZXh0OiBub29wLFxuICAgICAgZ2V0Q29udGV4dHM6IG5vb3AsXG4gICAgICBnZXRDYWNoZTogbm9vcCxcbiAgICAgIHNldENhY2hlOiBub29wLFxuICAgICAgZ2V0Q2FjaGVzOiBub29wLFxuICAgICAgc3RvcFByb3BhZ2F0aW9uOiBub29wLFxuICAgIH07XG4gIH1cblxuICBfYWRhcHRlciE6IFQ7XG5cbiAgY29uc3RydWN0b3IoYWRhcHRlcjogVCkge1xuICAgIHRoaXMuX2FkYXB0ZXIgPSB7IC4uLkJhc2VGb3VuZGF0aW9uLmRlZmF1bHRBZGFwdGVyLCAuLi5hZGFwdGVyIH07XG4gIH1cblxuICBnZXRQcm9wKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXIuZ2V0UHJvcChrZXkpO1xuICB9XG5cbiAgZ2V0UHJvcHMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlci5nZXRQcm9wcygpIGFzIGFueTtcbiAgfVxuXG4gIGdldFN0YXRlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXIuZ2V0U3RhdGUoa2V5KTtcbiAgfVxuXG4gIGdldFN0YXRlcygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyLmdldFN0YXRlcygpO1xuICB9XG5cbiAgc2V0U3RhdGUoc3RhdGVzOiBhbnksIGNiPzogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZCkge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyLnNldFN0YXRlKHsgLi4uc3RhdGVzIH0sIGNiKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGdldENhY2hlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlci5nZXRDYWNoZXMoKTtcbiAgfVxuXG4gIGdldENhY2hlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXIuZ2V0Q2FjaGUoa2V5KTtcbiAgfVxuXG4gIHNldENhY2hlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGtleSAmJiB0aGlzLl9hZGFwdGVyLnNldENhY2hlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgX2lzSW5Qcm9wcyhrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5nZXRQcm9wcygpO1xuICAgIHJldHVybiBrZXkgaW4gKHByb3BzIGFzIGFueSk7XG4gIH1cblxuICBpbml0KGxpZmVjeWNsZT86IGFueSkge31cblxuICBkZXN0cm95KCkge31cbn1cbmV4cG9ydCBkZWZhdWx0IEJhc2VGb3VuZGF0aW9uO1xuIl19
@@ -0,0 +1,5 @@
1
+ export const DEFAULT_AVATAR_WIDTH = 36;
2
+ export const DEFAULT_AVATAR_HEIGHT = 36;
3
+ export const AVATAR_NAME = 'name';
4
+ export const AVATAR_IMG = 'imgSrc';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLWNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL2NvbXBvbmVudHMtY29tbW9uL0J1YmJsZS9jb21tb24vYnViYmxlLWNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX0FWQVRBUl9XSURUSCA9IDM2O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVZBVEFSX0hFSUdIVCA9IDM2O1xuZXhwb3J0IGNvbnN0IEFWQVRBUl9OQU1FID0gJ25hbWUnO1xuZXhwb3J0IGNvbnN0IEFWQVRBUl9JTUcgPSAnaW1nU3JjJztcbiJdfQ==