iptdevs-design-system 2.7.111 → 2.7.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/cod/cod-form/cod-form.component.mjs +47 -41
- package/esm2020/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.mjs +2 -2
- package/esm2020/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.mjs +2 -2
- package/esm2020/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.mjs +1 -2
- package/esm2020/lib/core/models/cod/cod-rq.model.mjs +1 -1
- package/fesm2015/iptdevs-design-system.mjs +48 -43
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +48 -43
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/lib/cod/cod-form/cod-form.component.d.ts +2 -1
- package/lib/core/models/cod/cod-rq.model.d.ts +36 -36
- package/package.json +1 -1
|
@@ -2967,7 +2967,6 @@ class CodFormStepTwoComponent extends CodFormSteps {
|
|
|
2967
2967
|
this.setDataFromPreviusCod();
|
|
2968
2968
|
}
|
|
2969
2969
|
else {
|
|
2970
|
-
this.cleanComponent();
|
|
2971
2970
|
console.log('No hay data cargada para el Paso 2');
|
|
2972
2971
|
}
|
|
2973
2972
|
}
|
|
@@ -3253,7 +3252,7 @@ class CodFormStepThreeComponent extends CodFormSteps {
|
|
|
3253
3252
|
}
|
|
3254
3253
|
else {
|
|
3255
3254
|
console.log('No tiene acudiente');
|
|
3256
|
-
this.cleanComponent();
|
|
3255
|
+
//this.cleanComponent();
|
|
3257
3256
|
}
|
|
3258
3257
|
}
|
|
3259
3258
|
else {
|
|
@@ -3757,7 +3756,7 @@ class CodFormStepFiveComponent extends CodFormSteps {
|
|
|
3757
3756
|
}
|
|
3758
3757
|
else {
|
|
3759
3758
|
console.log('No hay data cargada para el Paso 5');
|
|
3760
|
-
this.cleanComponent();
|
|
3759
|
+
//this.cleanComponent();
|
|
3761
3760
|
}
|
|
3762
3761
|
}
|
|
3763
3762
|
}
|
|
@@ -3901,16 +3900,20 @@ class CodFormComponent {
|
|
|
3901
3900
|
this.userRole = this.baseService.getUserRole();
|
|
3902
3901
|
}
|
|
3903
3902
|
ngOnChanges(changes) {
|
|
3904
|
-
if (changes['
|
|
3905
|
-
if (this.
|
|
3903
|
+
if (changes['isNewCod']) {
|
|
3904
|
+
if (this.isNewCod) {
|
|
3906
3905
|
this.formTitle = 'Formulario para verificar información del COD';
|
|
3907
|
-
console.log(this.dataFromPreviusCodData);
|
|
3908
3906
|
this.getCodbyCode();
|
|
3909
3907
|
}
|
|
3910
3908
|
else {
|
|
3911
3909
|
this.formTitle = 'Formulario para creación del COD';
|
|
3912
3910
|
}
|
|
3913
3911
|
}
|
|
3912
|
+
if (changes['dataFromPreviusCodData']) {
|
|
3913
|
+
if (this.dataFromPreviusCodData !== null) {
|
|
3914
|
+
// Hay data como parametro y se debe pintar.
|
|
3915
|
+
}
|
|
3916
|
+
}
|
|
3914
3917
|
}
|
|
3915
3918
|
allowedRole() {
|
|
3916
3919
|
return this.allowedRoles.includes(this.userRole);
|
|
@@ -4031,59 +4034,59 @@ class CodFormComponent {
|
|
|
4031
4034
|
getCreateCODRq(data) {
|
|
4032
4035
|
let request = {
|
|
4033
4036
|
token: this.baseService.getUserToken(),
|
|
4034
|
-
academic_plan: data.filter(data => data.control === 'academic_plan')[0].value,
|
|
4035
|
-
course_type: data.filter(data => data.control === 'course_type')[0].value,
|
|
4036
|
-
agreement_by_category: data.filter(data => data.control === 'agreement_by_category')[0].value,
|
|
4037
|
-
english_level: data.filter(data => data.control === 'english_level')[0].value,
|
|
4038
|
-
availible_courses: data.filter(data => data.control === 'availible_courses')[0].value,
|
|
4039
|
-
student_address: data.filter(data => data.control === 'student_address')[0].value,
|
|
4040
|
-
birthdate: data.filter(data => data.control === 'birthdate')[0].value,
|
|
4041
|
-
country: data.filter(data => data.control === 'country')[0].value,
|
|
4042
|
-
state: data.filter(data => data.control === 'state')[0].value,
|
|
4043
|
-
city: data.filter(data => data.control === 'city')[0].value,
|
|
4044
|
-
student_id_card_type: data.filter(data => data.control === 'student_id_card_type')[0].value,
|
|
4045
|
-
student_id_card: data.filter(data => data.control === 'student_id_card')[0].value,
|
|
4046
|
-
student_last_name: data.filter(data => data.control === 'student_last_name')[0].value,
|
|
4047
4037
|
student_name: data.filter(data => data.control === 'student_name')[0].value,
|
|
4048
|
-
|
|
4038
|
+
student_last_name: data.filter(data => data.control === 'student_last_name')[0].value,
|
|
4049
4039
|
nickname: data.filter(data => data.control === 'nickname')[0].value,
|
|
4050
|
-
|
|
4051
|
-
age: data.filter(data => data.control === 'age')[0].value,
|
|
4052
|
-
student_occupation: data.filter(data => data.control === 'student_occupation')[0].value,
|
|
4053
|
-
stratum: data.filter(data => data.control === 'stratum')[0].value,
|
|
4054
|
-
grade: data.filter(data => data.control === 'grade')[0].value,
|
|
4055
|
-
civil_status: data.filter(data => data.control === 'civil_status')[0].value,
|
|
4040
|
+
student_email: data.filter(data => data.control === 'student_email')[0].value,
|
|
4056
4041
|
student_phone_indicative: data.filter(data => data.control === 'student_phone_indicative')[0].value,
|
|
4057
4042
|
student_phone_number: data.filter(data => data.control === 'student_phone_number')[0].value,
|
|
4043
|
+
gender: data.filter(data => data.control === 'gender')[0].value,
|
|
4044
|
+
birthdate: data.filter(data => data.control === 'birthdate')[0].value,
|
|
4045
|
+
city: data.filter(data => data.control === 'city')[0].value,
|
|
4046
|
+
student_id_card_type: data.filter(data => data.control === 'student_id_card_type')[0].value,
|
|
4047
|
+
student_id_card: data.filter(data => data.control === 'student_id_card')[0].value,
|
|
4058
4048
|
password: data.filter(data => data.control === 'password')[0].value,
|
|
4059
|
-
|
|
4049
|
+
needAtendant: data.filter(data => data.control === 'needAtendant')[0].value,
|
|
4050
|
+
parent_name: data.filter(data => data.control === 'parent_name')[0].value,
|
|
4051
|
+
parent_last_name: data.filter(data => data.control === 'parent_last_name')[0].value,
|
|
4060
4052
|
parent_id_card_type: data.filter(data => data.control === 'parent_id_card_type')[0].value,
|
|
4061
4053
|
parent_id_card: data.filter(data => data.control === 'parent_id_card')[0].value,
|
|
4062
|
-
parent_last_name: data.filter(data => data.control === 'parent_last_name')[0].value,
|
|
4063
|
-
parent_name: data.filter(data => data.control === 'parent_name')[0].value,
|
|
4064
|
-
needAtendant: data.filter(data => data.control === 'needAtendant')[0].value,
|
|
4065
4054
|
parent_phone_indicative: data.filter(data => data.control === 'parent_phone_indicative')[0].value,
|
|
4066
|
-
parent_occupation: data.filter(data => data.control === 'parent_occupation')[0].value,
|
|
4067
|
-
parent_address: data.filter(data => data.control === 'parent_address')[0].value,
|
|
4068
4055
|
parent_phone_number: data.filter(data => data.control === 'parent_phone_number')[0].value,
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4056
|
+
parent_occupation: data.filter(data => data.control === 'parent_occupation')[0].value,
|
|
4057
|
+
parent_office_address: data.filter(data => data.control === 'parent_address')[0].value,
|
|
4058
|
+
social_stratum: data.filter(data => data.control === 'stratum')[0].value,
|
|
4059
|
+
civil_status: data.filter(data => data.control === 'civil_status')[0].value,
|
|
4060
|
+
educational_level: data.filter(data => data.control === 'grade')[0].value,
|
|
4061
|
+
student_address: data.filter(data => data.control === 'student_address')[0].value,
|
|
4062
|
+
student_occupation: data.filter(data => data.control === 'student_occupation')[0].value,
|
|
4063
|
+
disability: data.filter(data => data.control === 'disability')[0].value,
|
|
4064
|
+
health_regimen: data.filter(data => data.control === 'health_regimen')[0].value,
|
|
4074
4065
|
marketing_reasons: data.filter(data => data.control === 'marketing_reasons')[0].value,
|
|
4075
|
-
observation: data.filter(data => data.control === 'observation')[0].value,
|
|
4076
4066
|
study_reasons: data.filter(data => data.control === 'study_reasons')[0].value,
|
|
4077
|
-
|
|
4078
|
-
disability: data.filter(data => data.control === 'disability')[0].value,
|
|
4067
|
+
observation: data.filter(data => data.control === 'observation')[0].value,
|
|
4079
4068
|
multiculturalism_1: data.filter(data => data.control === 'multiculturalism_1')[0].value,
|
|
4080
4069
|
multiculturalism_2: data.filter(data => data.control === 'multiculturalism_2')[0].value,
|
|
4081
4070
|
multiculturalism_3: data.filter(data => data.control === 'multiculturalism_3')[0].value,
|
|
4082
4071
|
multiculturalism_4: data.filter(data => data.control === 'multiculturalism_4')[0].value,
|
|
4083
4072
|
multiculturalism_5: data.filter(data => data.control === 'multiculturalism_5')[0].value,
|
|
4084
4073
|
multiculturalism_6: data.filter(data => data.control === 'multiculturalism_6')[0].value,
|
|
4085
|
-
|
|
4086
|
-
|
|
4074
|
+
availible_courses: data.filter(data => data.control === 'availible_courses')[0].value,
|
|
4075
|
+
course_type: data.filter(data => data.control === 'course_type')[0].value,
|
|
4076
|
+
agreement_by_category: data.filter(data => data.control === 'agreement_by_category')[0].value,
|
|
4077
|
+
english_level: data.filter(data => data.control === 'english_level')[0].value,
|
|
4078
|
+
payment_method: data.filter(data => data.control === 'payment_method')[0].value,
|
|
4079
|
+
quota_times: data.filter(data => data.control === 'quota_times')[0].value,
|
|
4080
|
+
payment_date: data.filter(data => data.control === 'payment_date')[0].value,
|
|
4081
|
+
payment_dates: this.financingData,
|
|
4082
|
+
program_price: data.filter(data => data.control === 'program_price')[0].value,
|
|
4083
|
+
total_price: data.filter(data => data.control === 'total_price')[0].value,
|
|
4084
|
+
terms: data.filter(data => data.control === 'terms')[0].value,
|
|
4085
|
+
re_password: data.filter(data => data.control === 're_password')[0].value,
|
|
4086
|
+
age: data.filter(data => data.control === 'age')[0].value,
|
|
4087
|
+
country: data.filter(data => data.control === 'country')[0].value,
|
|
4088
|
+
state: data.filter(data => data.control === 'state')[0].value,
|
|
4089
|
+
academic_plan: data.filter(data => data.control === 'academic_plan')[0].value,
|
|
4087
4090
|
};
|
|
4088
4091
|
console.log(request);
|
|
4089
4092
|
return request;
|
|
@@ -4093,12 +4096,14 @@ class CodFormComponent {
|
|
|
4093
4096
|
}
|
|
4094
4097
|
}
|
|
4095
4098
|
CodFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormComponent, deps: [{ token: BaseService }, { token: LocalStorageCODService }, { token: CodFormControls }, { token: CommercialService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4096
|
-
CodFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodFormComponent, selector: "ipt-cod-form", inputs: { dataFromPreviusCodData: "dataFromPreviusCodData" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"allowedRole() ; else Unauthorized\" class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\n\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">{{ formTitle }}</span>\n\n <p-tabView [activeIndex]=\"currentStep\" (activeIndexChange)=\"currentStep = $event\" [scrollable]=\"true\">\n <p-tabPanel leftIcon=\"pi pi-star\" header=\"1. Planes y convenios\">\n <app-cod-form-step-one (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-one>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-id-card\" header=\"2. Datos del estudiante\">\n <app-cod-form-step-two (changeStepEvent)=\"changeStep($event)\" [initialData]=\"dataFromPreviusCodData\" class=\"p-1\"></app-cod-form-step-two>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-user-edit\" header=\"3. Datos del acudiente\">\n <app-cod-form-step-three (changeStepEvent)=\"changeStep($event)\" [initialData]=\"dataFromPreviusCodData\" class=\"p-1\"></app-cod-form-step-three>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-money-bill\" header=\"4. Valores\">\n <app-cod-form-step-four (changeStepEvent)=\"changeStep($event)\" (financingData)=\"saveFinancingData($event)\" class=\"p-1\"></app-cod-form-step-four>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-eye\" header=\"5. Observaciones\">\n <app-cod-form-step-five (changeStepEvent)=\"changeStep($event)\" [userRole]=\"userRole\" [initialData]=\"dataFromPreviusCodData\" (action)=\"getFormAction($event)\" class=\"p-1\"></app-cod-form-step-five>\n </p-tabPanel>\n </p-tabView>\n\n \n</div>\n\n<ng-template #Unauthorized>\n <span class=\"flex justify-content-center font-bold p-2 bg-yellow-200 border-round-lg w-full\">\n No tienes los permisos para acceder a esta funcionalidad, comun\u00EDcate con el desarrollador.\n </span>\n</ng-template>\n\n\n<ipt-loader *ngIf=\"isLoading\" [isDialog]=\"true\" [message]=\"loaderMessage\"></ipt-loader>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$3.TabView, selector: "p-tabView", inputs: ["orientation", "style", "styleClass", "controlClose", "scrollable", "activeIndex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i6$3.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }, { kind: "component", type: CodFormStepOneComponent, selector: "app-cod-form-step-one", outputs: ["changeStepEvent"] }, { kind: "component", type: CodFormStepTwoComponent, selector: "app-cod-form-step-two", inputs: ["initialData"], outputs: ["changeStepEvent"] }, { kind: "component", type: CodFormStepThreeComponent, selector: "app-cod-form-step-three", inputs: ["initialData"], outputs: ["changeStepEvent"] }, { kind: "component", type: CodFormStepFourComponent, selector: "app-cod-form-step-four", outputs: ["changeStepEvent", "financingData"] }, { kind: "component", type: CodFormStepFiveComponent, selector: "app-cod-form-step-five", inputs: ["userRole", "initialData"], outputs: ["changeStepEvent", "action"] }] });
|
|
4099
|
+
CodFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodFormComponent, selector: "ipt-cod-form", inputs: { dataFromPreviusCodData: "dataFromPreviusCodData", isNewCod: "isNewCod" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"allowedRole() ; else Unauthorized\" class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\n\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">{{ formTitle }}</span>\n\n <p-tabView [activeIndex]=\"currentStep\" (activeIndexChange)=\"currentStep = $event\" [scrollable]=\"true\">\n <p-tabPanel leftIcon=\"pi pi-star\" header=\"1. Planes y convenios\">\n <app-cod-form-step-one (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-one>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-id-card\" header=\"2. Datos del estudiante\">\n <app-cod-form-step-two (changeStepEvent)=\"changeStep($event)\" [initialData]=\"dataFromPreviusCodData\" class=\"p-1\"></app-cod-form-step-two>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-user-edit\" header=\"3. Datos del acudiente\">\n <app-cod-form-step-three (changeStepEvent)=\"changeStep($event)\" [initialData]=\"dataFromPreviusCodData\" class=\"p-1\"></app-cod-form-step-three>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-money-bill\" header=\"4. Valores\">\n <app-cod-form-step-four (changeStepEvent)=\"changeStep($event)\" (financingData)=\"saveFinancingData($event)\" class=\"p-1\"></app-cod-form-step-four>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-eye\" header=\"5. Observaciones\">\n <app-cod-form-step-five (changeStepEvent)=\"changeStep($event)\" [userRole]=\"userRole\" [initialData]=\"dataFromPreviusCodData\" (action)=\"getFormAction($event)\" class=\"p-1\"></app-cod-form-step-five>\n </p-tabPanel>\n </p-tabView>\n\n \n</div>\n\n<ng-template #Unauthorized>\n <span class=\"flex justify-content-center font-bold p-2 bg-yellow-200 border-round-lg w-full\">\n No tienes los permisos para acceder a esta funcionalidad, comun\u00EDcate con el desarrollador.\n </span>\n</ng-template>\n\n\n<ipt-loader *ngIf=\"isLoading\" [isDialog]=\"true\" [message]=\"loaderMessage\"></ipt-loader>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$3.TabView, selector: "p-tabView", inputs: ["orientation", "style", "styleClass", "controlClose", "scrollable", "activeIndex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i6$3.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }, { kind: "component", type: CodFormStepOneComponent, selector: "app-cod-form-step-one", outputs: ["changeStepEvent"] }, { kind: "component", type: CodFormStepTwoComponent, selector: "app-cod-form-step-two", inputs: ["initialData"], outputs: ["changeStepEvent"] }, { kind: "component", type: CodFormStepThreeComponent, selector: "app-cod-form-step-three", inputs: ["initialData"], outputs: ["changeStepEvent"] }, { kind: "component", type: CodFormStepFourComponent, selector: "app-cod-form-step-four", outputs: ["changeStepEvent", "financingData"] }, { kind: "component", type: CodFormStepFiveComponent, selector: "app-cod-form-step-five", inputs: ["userRole", "initialData"], outputs: ["changeStepEvent", "action"] }] });
|
|
4097
4100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormComponent, decorators: [{
|
|
4098
4101
|
type: Component,
|
|
4099
4102
|
args: [{ selector: 'ipt-cod-form', template: "<div *ngIf=\"allowedRole() ; else Unauthorized\" class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\n\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">{{ formTitle }}</span>\n\n <p-tabView [activeIndex]=\"currentStep\" (activeIndexChange)=\"currentStep = $event\" [scrollable]=\"true\">\n <p-tabPanel leftIcon=\"pi pi-star\" header=\"1. Planes y convenios\">\n <app-cod-form-step-one (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-one>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-id-card\" header=\"2. Datos del estudiante\">\n <app-cod-form-step-two (changeStepEvent)=\"changeStep($event)\" [initialData]=\"dataFromPreviusCodData\" class=\"p-1\"></app-cod-form-step-two>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-user-edit\" header=\"3. Datos del acudiente\">\n <app-cod-form-step-three (changeStepEvent)=\"changeStep($event)\" [initialData]=\"dataFromPreviusCodData\" class=\"p-1\"></app-cod-form-step-three>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-money-bill\" header=\"4. Valores\">\n <app-cod-form-step-four (changeStepEvent)=\"changeStep($event)\" (financingData)=\"saveFinancingData($event)\" class=\"p-1\"></app-cod-form-step-four>\n </p-tabPanel>\n <p-tabPanel leftIcon=\"pi pi-eye\" header=\"5. Observaciones\">\n <app-cod-form-step-five (changeStepEvent)=\"changeStep($event)\" [userRole]=\"userRole\" [initialData]=\"dataFromPreviusCodData\" (action)=\"getFormAction($event)\" class=\"p-1\"></app-cod-form-step-five>\n </p-tabPanel>\n </p-tabView>\n\n \n</div>\n\n<ng-template #Unauthorized>\n <span class=\"flex justify-content-center font-bold p-2 bg-yellow-200 border-round-lg w-full\">\n No tienes los permisos para acceder a esta funcionalidad, comun\u00EDcate con el desarrollador.\n </span>\n</ng-template>\n\n\n<ipt-loader *ngIf=\"isLoading\" [isDialog]=\"true\" [message]=\"loaderMessage\"></ipt-loader>" }]
|
|
4100
4103
|
}], ctorParameters: function () { return [{ type: BaseService }, { type: LocalStorageCODService }, { type: CodFormControls }, { type: CommercialService }]; }, propDecorators: { dataFromPreviusCodData: [{
|
|
4101
4104
|
type: Input
|
|
4105
|
+
}], isNewCod: [{
|
|
4106
|
+
type: Input
|
|
4102
4107
|
}] } });
|
|
4103
4108
|
|
|
4104
4109
|
class CodModule {
|