ServiceBerechtigungMSAQ.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_abschluss_ge_ServiceBerechtigungMSAQ = exports.ServiceBerechtigungMSAQ = void 0;
  4. const Service_1 = require("../../../core/Service");
  5. const JavaString_1 = require("../../../java/lang/JavaString");
  6. const GELeistungsdifferenzierteKursart_1 = require("../../../core/types/ge/GELeistungsdifferenzierteKursart");
  7. const LogLevel_1 = require("../../../logger/LogLevel");
  8. const NullPointerException_1 = require("../../../java/lang/NullPointerException");
  9. const ServiceAbschlussMSA_1 = require("../../../core/abschluss/ge/ServiceAbschlussMSA");
  10. const Arrays_1 = require("../../../java/util/Arrays");
  11. const Abschluss_1 = require("../../../core/types/Abschluss");
  12. const Vector_1 = require("../../../java/util/Vector");
  13. const AbschlussManager_1 = require("../../../core/abschluss/AbschlussManager");
  14. class ServiceBerechtigungMSAQ extends Service_1.Service {
  15. filterDefizite = { test: (f) => (f.note > 3) || ((GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note > 2)) };
  16. filterDefizite1NS = { test: (f) => ((!GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note === 4)) || ((GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note === 3)) };
  17. filterDefizite2NS = { test: (f) => ((!GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note === 5)) || ((GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note === 4)) };
  18. filterDefizitWP = { test: (f) => (f.note > 3) && JavaString_1.JavaString.equalsIgnoreCase("WP", f.kuerzel) };
  19. filterDefizitNichtWP = { test: (f) => (f.note > 3) || ((GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note > 2)) && !JavaString_1.JavaString.equalsIgnoreCase("WP", f.kuerzel) };
  20. filterFG1NichtAusgleichbar = { test: (f) => (f.note > 4) || ((GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note > 3)) };
  21. filterFG2NichtAusgleichbar = { test: (f) => (f.note > 5) || ((GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note > 3)) };
  22. filterAusgleiche = { test: (f) => !f.ausgleich && ((f.note < 2) || ((!GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(f.kursart)) && (f.note < 3))) };
  23. filterEKurse = { test: (f) => (GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.E.hat(f.kursart)) };
  24. constructor() {
  25. super();
  26. }
  27. /**
  28. * Führt die Abschlussberechnung (bzw. Berechtigungsberechnung) anhand der übergebenen
  29. * Abschlussfächer durch und gibt das Berechnungsergebnis zurück.
  30. *
  31. * @param input die Abschlussfächer
  32. *
  33. * @return das Ergebnis der Abschlussberechnung
  34. */
  35. handle(input) {
  36. this.logger.logLn(LogLevel_1.LogLevel.INFO, "Prüfe MSA-Q:");
  37. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "============");
  38. if ((input.faecher === null) || (!AbschlussManager_1.AbschlussManager.pruefeHat4LeistungsdifferenzierteFaecher(input))) {
  39. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "______________________________");
  40. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " => Fehler: Es wurden nicht genügend leistungsdifferenzierte Fächer gefunden.");
  41. return AbschlussManager_1.AbschlussManager.getErgebnis(null, false);
  42. }
  43. if (!AbschlussManager_1.AbschlussManager.pruefeKuerzelDuplikate(input)) {
  44. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "______________________________");
  45. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " => Fehler: Es wurden Fächer mit dem gleichen Kürzel zur Abschlussprüfung übergeben. Dies ist nicht zulässig.");
  46. return AbschlussManager_1.AbschlussManager.getErgebnis(null, false);
  47. }
  48. let faecher = ServiceAbschlussMSA_1.ServiceAbschlussMSA.getFaechergruppen(input.faecher);
  49. if (!faecher.fg1.istVollstaendig(Arrays_1.Arrays.asList("D", "M", "E", "WP"))) {
  50. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "______________________________");
  51. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " => Fehler: Es wurden nicht alle nötigen Leistungen für die Fächergruppe 1 gefunden.");
  52. return AbschlussManager_1.AbschlussManager.getErgebnis(null, false);
  53. }
  54. if (faecher.fg2.isEmpty()) {
  55. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "______________________________");
  56. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " => Fehler: Keine Leistungen für die Fächergruppe 2 gefunden.");
  57. return AbschlussManager_1.AbschlussManager.getErgebnis(null, false);
  58. }
  59. let anzahlEKurse = faecher.getFaecherAnzahl(this.filterEKurse);
  60. if (anzahlEKurse < 3) {
  61. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "______________________________");
  62. this.logger.logLn(LogLevel_1.LogLevel.INFO, " => kein MSA-Q (FOR-Q) - nicht genügend E-Kurse belegt");
  63. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  64. }
  65. else if (anzahlEKurse > 3) {
  66. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " - Verbessern der E-Kurs-Noten für die Defizitberechnung, falls mehr als 3 E-Kurse vorhanden sind:");
  67. let tmpFaecher = faecher.fg2.getFaecher(this.filterEKurse);
  68. for (let f of tmpFaecher) {
  69. let note = f.note;
  70. let note_neu = (note === 1) ? 1 : note - 1;
  71. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " " + f.kuerzel + ":(E)" + note + "->(G)" + note_neu);
  72. f.note = note_neu;
  73. f.kursart = GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.kuerzel;
  74. }
  75. }
  76. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " -> FG1: Fächer " + faecher.fg1.toString().valueOf());
  77. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, " -> FG2: Fächer " + faecher.fg2.toString().valueOf());
  78. let abschlussergebnis = this.pruefeDefizite(faecher, "");
  79. if (abschlussergebnis.erworben) {
  80. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "______________________________");
  81. this.logger.logLn(LogLevel_1.LogLevel.INFO, " => MSA-Q (FOR-Q): APO-SI §43 (4)");
  82. }
  83. else if (AbschlussManager_1.AbschlussManager.hatNachpruefungsmoeglichkeit(abschlussergebnis)) {
  84. this.logger.logLn(LogLevel_1.LogLevel.INFO, " => kein MSA-Q (FOR-Q) - Nachprüfungsmöglichkeite(en) in " + AbschlussManager_1.AbschlussManager.getNPFaecherString(abschlussergebnis).valueOf());
  85. }
  86. else {
  87. this.logger.logLn(LogLevel_1.LogLevel.INFO, " => kein MSA-Q (FOR-Q) - KEINE Nachprüfungsmöglichkeiten!");
  88. }
  89. return abschlussergebnis;
  90. }
  91. /**
  92. * Prüft in Bezug auf Defizite, ob der Abschluss erworben wurde.
  93. *
  94. * @param faecher die Asbchlussfächer nach Fächergruppen sortiert
  95. * @param log_indent die Einrückung für das Logging
  96. *
  97. * @return das Ergebnis der Abschlussberechnung in Bezug die Defizitberechnung
  98. */
  99. pruefeDefizite(faecher, log_indent) {
  100. let fg1_defizite = faecher.fg1.getFaecher(this.filterDefizite);
  101. let fg2_defizite = faecher.fg2.getFaecher(this.filterDefizite);
  102. if (fg1_defizite.size() > 0)
  103. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> FG1: Defizit" + (fg1_defizite.size() > 1 ? "e" : "") + ": " + faecher.fg1.getKuerzelListe(this.filterDefizite).valueOf());
  104. if (fg2_defizite.size() > 0)
  105. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> FG2: Defizit" + (fg2_defizite.size() > 1 ? "e" : "") + ": " + faecher.fg2.getKuerzelListe(this.filterDefizite).valueOf());
  106. let nachpruefung_genutzt = false;
  107. let npFaecher = new Vector_1.Vector();
  108. let fg1_nicht_ausgleichbar = faecher.fg1.getFaecher(this.filterFG1NichtAusgleichbar);
  109. let fg2_nicht_ausgleichbar = faecher.fg2.getFaecher(this.filterFG2NichtAusgleichbar);
  110. if ((fg1_nicht_ausgleichbar.size() > 0) || (fg2_nicht_ausgleichbar.size() > 0)) {
  111. let str_faecher = faecher.getKuerzelListe(this.filterFG1NichtAusgleichbar, this.filterFG2NichtAusgleichbar);
  112. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Defizit(e) in " + str_faecher.valueOf() + " aufgrund zu hoher Abweichungen nicht ausgleichbar.");
  113. if ((fg1_nicht_ausgleichbar.size() === 0) && (fg2_nicht_ausgleichbar.size() === 1) && (GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G.hat(fg2_nicht_ausgleichbar.get(0).kursart)) && (fg2_nicht_ausgleichbar.get(0).note === 4)) {
  114. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Nachprüfung muss falls möglich in " + fg2_nicht_ausgleichbar.get(0).kuerzel + " stattfinden!");
  115. nachpruefung_genutzt = true;
  116. npFaecher.add(fg2_nicht_ausgleichbar.get(0));
  117. }
  118. else {
  119. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  120. }
  121. }
  122. let fg1_ausgleichsfaecher = faecher.fg1.getFaecher(this.filterAusgleiche);
  123. let wp_defizit = faecher.fg1.getFach(this.filterDefizitWP);
  124. if ((fg1_defizite.size() > 2) || ((fg1_defizite.size() === 2) && (wp_defizit === null))) {
  125. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> zu viele Defizite in FG1");
  126. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  127. }
  128. else if ((fg1_defizite.size() === 2) && (wp_defizit !== null) && (fg1_ausgleichsfaecher.size() === 0)) {
  129. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> zu viele Defizite in FG1 - kein Ausgleich möglich");
  130. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  131. }
  132. else if ((fg1_defizite.size() === 2) && (wp_defizit !== null) && (fg1_ausgleichsfaecher.size() > 0) && (!nachpruefung_genutzt)) {
  133. let defizitFach = faecher.fg1.getFach(this.filterDefizitNichtWP);
  134. if (defizitFach === null)
  135. throw new NullPointerException_1.NullPointerException();
  136. let ausgleichsFach = fg1_ausgleichsfaecher.get(0);
  137. defizitFach.ausgeglichen = true;
  138. ausgleichsFach.ausgleich = true;
  139. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Ausgleich von " + defizitFach.kuerzel + " durch " + ausgleichsFach.kuerzel);
  140. nachpruefung_genutzt = true;
  141. npFaecher.add(wp_defizit);
  142. let abschlussergebnis = this.pruefeFG2(faecher, log_indent, npFaecher, nachpruefung_genutzt);
  143. if (abschlussergebnis.erworben) {
  144. return AbschlussManager_1.AbschlussManager.getErgebnisNachpruefung(Abschluss_1.Abschluss.MSA_Q, AbschlussManager_1.AbschlussManager.getKuerzel(npFaecher));
  145. }
  146. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  147. }
  148. if ((fg1_defizite.size() === 1) && (wp_defizit === null) && (fg1_ausgleichsfaecher.size() === 0)) {
  149. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> kein Defizit-Ausgleich in FG1");
  150. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  151. }
  152. if ((fg1_defizite.size() === 1) && (wp_defizit === null)) {
  153. let defizitFach = faecher.fg1.getFach(this.filterDefizitNichtWP);
  154. if (defizitFach === null)
  155. throw new NullPointerException_1.NullPointerException();
  156. let ausgleichsFach = fg1_ausgleichsfaecher.get(0);
  157. defizitFach.ausgeglichen = true;
  158. ausgleichsFach.ausgleich = true;
  159. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Ausgleich von " + defizitFach.kuerzel + " durch " + ausgleichsFach.kuerzel);
  160. }
  161. if ((fg1_defizite.size() === 1) && (wp_defizit !== null)) {
  162. if ((fg1_ausgleichsfaecher.size() > 0)) {
  163. let defizitFach = wp_defizit;
  164. let ausgleichsFach = fg1_ausgleichsfaecher.get(0);
  165. defizitFach.ausgeglichen = true;
  166. ausgleichsFach.ausgleich = true;
  167. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Prüfe FG2 mit der Option Ausgleich von " + defizitFach.kuerzel + " durch " + ausgleichsFach.kuerzel);
  168. let abschlussergebnis = this.pruefeFG2(faecher, log_indent.valueOf() + " ", npFaecher, nachpruefung_genutzt);
  169. if (abschlussergebnis.erworben)
  170. return abschlussergebnis;
  171. defizitFach.ausgeglichen = false;
  172. ausgleichsFach.ausgleich = false;
  173. }
  174. if (nachpruefung_genutzt) {
  175. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Eine Nachprüfung im WP-Fach und in dem leistungsdifferenzierten Fach der FG2 ist nicht gleichzeitig möglich.");
  176. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  177. }
  178. wp_defizit.ausgleich = true;
  179. wp_defizit.note--;
  180. let abschlussergebnis = this.pruefeFG2(faecher, log_indent, npFaecher, true);
  181. wp_defizit.note++;
  182. wp_defizit.ausgleich = false;
  183. if (abschlussergebnis.erworben) {
  184. nachpruefung_genutzt = true;
  185. npFaecher.add(wp_defizit);
  186. }
  187. return AbschlussManager_1.AbschlussManager.getErgebnisNachpruefung(Abschluss_1.Abschluss.MSA_Q, AbschlussManager_1.AbschlussManager.getKuerzel(npFaecher));
  188. }
  189. let log_fg2_indent = log_indent;
  190. if (fg2_nicht_ausgleichbar.size() === 1) {
  191. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Prüfe FG2 mit Nachprüfung in " + fg2_nicht_ausgleichbar.get(0).kuerzel);
  192. log_fg2_indent += " ";
  193. }
  194. let abschlussergebnis = this.pruefeFG2(faecher, log_fg2_indent, npFaecher, nachpruefung_genutzt);
  195. if (((fg2_nicht_ausgleichbar.size() === 1) && abschlussergebnis.erworben) || ((!abschlussergebnis.erworben) && (AbschlussManager_1.AbschlussManager.hatNachpruefungsmoeglichkeit(abschlussergebnis)))) {
  196. return AbschlussManager_1.AbschlussManager.getErgebnisNachpruefung(Abschluss_1.Abschluss.MSA_Q, AbschlussManager_1.AbschlussManager.getKuerzel(npFaecher));
  197. }
  198. return abschlussergebnis;
  199. }
  200. /**
  201. * Führt eine Detailprüfung in der Fächergruppe 2 durch. Diese Methode wird ggf. mehrfach - auch rekursiv - aufgerufen.
  202. *
  203. * @param faecher die Abschlussfächer nach Fächergruppen sortiert
  204. * @param log_indent die Einrückung für das Logging
  205. * @param npFaecher die Liste der Nachprüfungsfächer, die bisher schon feststehen
  206. * @param nachpruefung_genutzt gibt an, ob die Nachprüfungsmöglichkeit bereits eingesetzt werden musste
  207. *
  208. * @return das Ergebnis der Abschlussberechnung in Bezug auf den Stand dieser Detailprüfung
  209. */
  210. pruefeFG2(faecher, log_indent, npFaecher, nachpruefung_genutzt) {
  211. let ges_ausgleichsfaecher = faecher.getFaecher(this.filterAusgleiche);
  212. let fg2_defizite_1NS = faecher.fg2.getFaecher(this.filterDefizite1NS);
  213. let fg2_defizite_2NS = faecher.fg2.getFaecher(this.filterDefizite2NS);
  214. let fg2_defizit_anzahl = fg2_defizite_1NS.size() + fg2_defizite_2NS.size();
  215. if (fg2_defizit_anzahl === 0) {
  216. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> keine Defizite in FG2");
  217. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, true);
  218. }
  219. if ((fg2_defizite_2NS.size() > 2) || (fg2_defizit_anzahl > (nachpruefung_genutzt ? 3 : 4))) {
  220. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> zu viele Defizite in FG2 - mit Ausgleich und Nachprüfung kein Abschluss möglich");
  221. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  222. }
  223. if (ges_ausgleichsfaecher.size() < fg2_defizit_anzahl - (nachpruefung_genutzt ? 0 : 1)) {
  224. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> zu viele Defizite in FG2 - nicht genügend Ausgleichsfächer vorhanden");
  225. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, false);
  226. }
  227. if (fg2_defizite_2NS.size() === 2) {
  228. for (let defizitFach of fg2_defizite_2NS) {
  229. defizitFach.ausgeglichen = true;
  230. defizitFach.ausgleich = true;
  231. defizitFach.note--;
  232. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Prüfe erneut mit Nachprüfung in " + defizitFach.kuerzel);
  233. let abschlussergebnis = this.pruefeFG2(faecher, log_indent.valueOf() + " ", npFaecher, true);
  234. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Nachprüfung in " + defizitFach.kuerzel + (abschlussergebnis.erworben ? " möglich" : " nicht möglich"));
  235. if (abschlussergebnis.erworben)
  236. npFaecher.add(defizitFach);
  237. defizitFach.ausgeglichen = true;
  238. defizitFach.ausgleich = true;
  239. defizitFach.note++;
  240. }
  241. return AbschlussManager_1.AbschlussManager.getErgebnisNachpruefung(Abschluss_1.Abschluss.MSA_Q, AbschlussManager_1.AbschlussManager.getKuerzel(npFaecher));
  242. }
  243. if (ges_ausgleichsfaecher.size() >= fg2_defizit_anzahl) {
  244. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> genug Ausgleichsfächer vorhanden." + (nachpruefung_genutzt ? "" : " Nachprüfung nicht nötig."));
  245. return AbschlussManager_1.AbschlussManager.getErgebnis(Abschluss_1.Abschluss.MSA_Q, true);
  246. }
  247. for (let defizitFach of fg2_defizite_1NS) {
  248. defizitFach.ausgeglichen = true;
  249. defizitFach.ausgleich = true;
  250. defizitFach.note--;
  251. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Prüfe erneut mit Nachprüfung in " + defizitFach.kuerzel);
  252. let abschlussergebnis = this.pruefeFG2(faecher, log_indent.valueOf() + " ", npFaecher, true);
  253. this.logger.logLn(LogLevel_1.LogLevel.DEBUG, log_indent.valueOf() + " -> Nachprüfung in " + defizitFach.kuerzel + (abschlussergebnis.erworben ? " möglich" : " nicht möglich"));
  254. if (abschlussergebnis.erworben)
  255. npFaecher.add(defizitFach);
  256. defizitFach.ausgeglichen = true;
  257. defizitFach.ausgleich = true;
  258. defizitFach.note++;
  259. }
  260. return AbschlussManager_1.AbschlussManager.getErgebnisNachpruefung(Abschluss_1.Abschluss.MSA_Q, AbschlussManager_1.AbschlussManager.getKuerzel(npFaecher));
  261. }
  262. isTranspiledInstanceOf(name) {
  263. return ['de.nrw.schule.svws.core.Service', 'de.nrw.schule.svws.core.abschluss.ge.ServiceBerechtigungMSAQ'].includes(name);
  264. }
  265. }
  266. exports.ServiceBerechtigungMSAQ = ServiceBerechtigungMSAQ;
  267. function cast_de_nrw_schule_svws_core_abschluss_ge_ServiceBerechtigungMSAQ(obj) {
  268. return obj;
  269. }
  270. exports.cast_de_nrw_schule_svws_core_abschluss_ge_ServiceBerechtigungMSAQ = cast_de_nrw_schule_svws_core_abschluss_ge_ServiceBerechtigungMSAQ;
  271. //# sourceMappingURL=ServiceBerechtigungMSAQ.js.map