@ondoher/enigma 1.0.3 → 1.0.6

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 (46) hide show
  1. package/README.md +72 -46
  2. package/dist/index.d.ts +899 -0
  3. package/jsconfig.json +2 -2
  4. package/lib/enigma/Encoder.js +52 -18
  5. package/lib/enigma/Enigma.js +10 -9
  6. package/lib/enigma/EnigmaTypes.d.ts +17 -12
  7. package/lib/enigma/PlugBoard.js +1 -1
  8. package/lib/enigma/Reflector.js +1 -1
  9. package/lib/enigma/Rotor.js +3 -2
  10. package/lib/enigma/index.js +1 -1
  11. package/lib/enigma/tests/EnigmaSpec.js +5 -5
  12. package/lib/generator/CodeBook.js +3 -3
  13. package/lib/generator/Generator.js +5 -4
  14. package/lib/generator/GeneratorTypes.d.ts +2 -1
  15. package/lib/utils/Random.js +1 -1
  16. package/package.json +7 -2
  17. package/scripts/EnigmaData.js +236 -0
  18. package/scripts/hamlet.html +8880 -0
  19. package/scripts/make-validated-data.js +4 -0
  20. package/scripts/parseHamlet.js +32 -0
  21. package/scripts/test-messages.js +60 -0
  22. package/scripts/test.js +118 -0
  23. package/scripts/x +6446 -0
  24. package/tsconfig.json +19 -0
  25. package/types/enigma/Encoder.d.ts +128 -0
  26. package/types/enigma/Enigma.d.ts +88 -0
  27. package/types/enigma/EntryDisc.d.ts +17 -0
  28. package/types/enigma/Inventory.d.ts +91 -0
  29. package/types/enigma/PlugBoard.d.ts +26 -0
  30. package/types/enigma/Reflector.d.ts +14 -0
  31. package/types/enigma/Rotor.d.ts +59 -0
  32. package/types/enigma/consts.d.ts +1 -0
  33. package/types/enigma/index.d.ts +5 -0
  34. package/types/enigma/standardInventory.d.ts +71 -0
  35. package/types/enigma/tests/EnigmaData.d.ts +46 -0
  36. package/types/enigma/tests/EnigmaSpec.d.ts +1 -0
  37. package/types/enigma/tests/PlugBoardData.d.ts +4 -0
  38. package/types/enigma/tests/PlugBoardSpec.d.ts +1 -0
  39. package/types/enigma/tests/RotorData.d.ts +15 -0
  40. package/types/enigma/tests/RotorSpec.d.ts +1 -0
  41. package/types/generator/CodeBook.d.ts +82 -0
  42. package/types/generator/Generator.d.ts +67 -0
  43. package/types/generator/hamlet.d.ts +2 -0
  44. package/types/generator/index.d.ts +3 -0
  45. package/types/index.d.ts +899 -0
  46. package/types/utils/Random.d.ts +131 -0
@@ -0,0 +1,236 @@
1
+ export const enigmaData = {
2
+ sampleFieldMessages: [
3
+ {
4
+ source: 'http://wiki.franklinheath.co.uk/index.php/Enigma/Sample_Decrypts#Operation_Barbarossa.2C_1941',
5
+ model: 'I/M3',
6
+ setup: {
7
+ reflector: 'B',
8
+ rotors: ['II', 'IV', 'V'],
9
+ ringSettings: [2, 21, 12],
10
+ plugs: 'AV BS CG DL FU HZ IN KM OW RX'
11
+ },
12
+ message: {
13
+ key: 'BLA',
14
+ encoded: 'EDPUDNRGYSZRCXNUYTPOMRMBOFKTBZREZKMLXLVEFGUEYSIOZVEQMIKUBPMMYLKLTTDEISMDICAGYKUACTCDOMOHWXMUUIAUBSTSLRNBZSZWNRFXWFYSSXJZVIJHIDISHPRKLKAYUPADTXQSPINQMATLPIFSVKDASCTACDPBOPVHJK',
15
+ decoded: 'AUFKLXABTEILUNGXVONXKURTINOWAXKURTINOWAXNORDWESTLXSEBEZXSEBEZXUAFFLIEGERSTRASZERIQTUNGXDUBROWKIXDUBROWKIXOPOTSCHKAXOPOTSCHKAXUMXEINSAQTDREINULLXUHRANGETRETENXANGRIFFXINFXRGTX',
16
+ }
17
+ },
18
+ {
19
+ source: 'http://wiki.franklinheath.co.uk/index.php/Enigma/Sample_Messages#U-264_.28Kapit.C3.A4nleutnant_Hartwig_Looks.29.2C_1942',
20
+ model: 'M4',
21
+ setup: {
22
+ reflector: 'Thin-B',
23
+ rotors: ['Beta', 'II', 'IV', 'I'],
24
+ ringSettings: [1, 1, 1, 22],
25
+ plugs: 'AT BL DF GJ HM NW OP QY RZ VX',
26
+ },
27
+ message: {
28
+ key: 'VJNA',
29
+ encoded: 'NCZWVUSXPNYMINHZXMQXSFWXWLKJAHSHNMCOCCAKUQPMKCSMHKSEINJUSBLKIOSXCKUBHMLLXCSJUSRRDVKOHULXWCCBGVLIYXEOAHXRHKKFVDREWEZLXOBAFGYUJQUKGRTVUKAMEURBVEKSUHHVOYHABCJWMAKLFKLMYFVNRIZRVVRTKOFDANJMOLBGFFLEOPRGTFLVRHOWOPBEKVWMUQFMPWPARMFHAGKXIIBG',
30
+ decoded: 'VONVONJLOOKSJHFFTTTEINSEINSDREIZWOYYQNNSNEUNINHALTXXBEIANGRIFFUNTERWASSERGEDRUECKTYWABOSXLETZTERGEGNERSTANDNULACHTDREINULUHRMARQUANTONJOTANEUNACHTSEYHSDREIYZWOZWONULGRADYACHTSMYSTOSSENACHXEKNSVIERMBFAELLTYNNNNNNOOOVIERYSICHTEINSNULL',
31
+ }
32
+ },
33
+ {
34
+ source: 'http://wiki.franklinheath.co.uk/index.php/Enigma/Sample_Messages#Scharnhorst_.28Konteradmiral_Erich_Bey.29.2C_1943',
35
+ model: 'M3',
36
+ setup: {
37
+ reflector: 'B',
38
+ rotors: ['III', 'VI', 'VIII'],
39
+ ringSettings: [1, 8, 13],
40
+ plugs: 'AN EZ HK IJ LR MQ OT PV SW UX',
41
+ },
42
+ message: {
43
+ key: 'UZV',
44
+ encoded: 'YKAENZAPMSCHZBFOCUVMRMDPYCOFHADZIZMEFXTHFLOLPZLFGGBOTGOXGRETDWTJIQHLMXVJWKZUASTR',
45
+ decoded: 'STEUEREJTANAFJORDJANSTANDORTQUAAACCCVIERNEUNNEUNZWOFAHRTZWONULSMXXSCHARNHORSTHCO',
46
+ }
47
+ },
48
+ {
49
+ source: 'https://enigma.hoerenberg.com/index.php?cat=The%20U534%20messages&page=P1030662',
50
+ model: 'M4',
51
+ setup: {
52
+ reflector: 'Thin-C',
53
+ rotors: ['Beta', 'V', 'VI', 'VIII'],
54
+ ringSettings: 'AAEL',
55
+ plugs: 'AE BF CM DQ HU JN LX PR SZ VW',
56
+ },
57
+ message: {
58
+ key: 'WIIJ',
59
+ encoded: 'LIRZMLWRCDMSNKLKBEBHRMFQFEQAZWXBGBIEXJPYFCQAAWSEKDEACOHDZKCZTOVSYHFNSCMAIMIMMAVJNLFXEWNPUIRINOZNCRVDHCGKCYRVUJQPVKEUIVVXGLQMKRJMDMLXLLRLYBKJWRXBQRZWGCCNDOPMGCKJ',
60
+ decoded: 'UUUVIRSIBENNULEINSYNACHRXUUUSTUETZPUNKTLUEBECKVVVCHEFVIERXUUUFLOTTXXMITUUUVIERSIBENNULZWOUNDUUUVIERSIBENNULDREIZURFLENDERWERFTLUEBECKGEHENXFONDORTFOLGTWEITERESX',
61
+ }
62
+ },
63
+ {
64
+ source: 'https://enigma.hoerenberg.com/index.php?cat=Norrk%C3%B6ping%20messages&page=PAGE_47_DOEP',
65
+ model: 'M3',
66
+ setup: {
67
+ reflector: 'B',
68
+ rotors: ['VII', 'IV', 'VI'],
69
+ ringSettings: 'AGW',
70
+ plugs: 'BM DX EW GP JO KV NZ RT',
71
+ },
72
+ message: {
73
+ key: 'NSH',
74
+ encoded: 'YEWZANTGDXWUVDSSYQELAMUOAMBVFZAJWFATABRMMBWXWTLFIOYBTEXXFFAOHADDXWWGBEROYDWLEUTP',
75
+ decoded: 'KOFFERGRAMOPHONKEINSINNKTZCMYQWPJDZXQLXGJXKWXLQDHYKCMIRBYKFHCMQWHVXLRHGDXMQWCHYK',
76
+ }
77
+ },
78
+ {
79
+ source: 'https://enigma.hoerenberg.com/index.php?cat=Norrk%C3%B6ping%20messages&page=PAGE_49_KRLR',
80
+ model: 'M3',
81
+ setup: {
82
+ reflector: 'B',
83
+ rotors: ['VII', 'IV', 'VI'],
84
+ ringSettings: 'AGW',
85
+ plugs: 'BM DX EW GP JO KV NZ RT',
86
+ },
87
+ message: {
88
+ key: 'RPR',
89
+ encoded: 'PBQOMEWLLMJFBXKPZNBHRGLUGVHJBXYPSEACOXOTBQRWVTPVVYHLLDOCQQKIWVAMJNFADSUNAVMJGJIBMUGBWWRKJBZNHVELOGZHTISLTUWS',
90
+ decoded: 'VERWALTUNGSAMTREICHSGERICHTARBEITSLAGERNICHTAUFSCHLAGENVCNSTDMQWZVGNVMBCPDGKPFQZWTRLDMFNGHSRDTFZGLDKCVLMNHGF',
91
+
92
+ }
93
+
94
+ }
95
+ ],
96
+ sampleVerifiedMessages: [
97
+ {
98
+ verified: ['https://cryptii.com/pipes/enigma-machine', ],
99
+ model: 'I',
100
+ setup: {
101
+ rotors: ['II', 'IV', 'III'],
102
+ plugs: 'IU ZM NK YH SJ DB TX RF OG QE',
103
+ ringSettings: [22, 26, 26],
104
+ reflector: 'A'
105
+ },
106
+ message: {
107
+ key: 'ZAE',
108
+ encoded: 'EICSSVSACTFYCNWRBCXMELAKMTBDSSPAIHMUKGFDPVEUHUDWRKOTITUTNWCEJTGUUGVVBOSVOYIDXHBRFYNOAJWISOZDIOPIXJDJJXBUYJWQRMMACUDGZCVHIFPRPCUDDWTXLCEUEASBRVOUFRTQDDOWWGCIEQSAYEXYHLCJHKWRMNQUHERAEGUXBQQDWIZYQHFJZRBZBNGWPUGLUYMUCXFKPPBWXAPRRXZLWBOFPWQHKVXWKHTNJXQCZZROWMYPLSMJINVBUCIPVYZGZXMONPMEIFWALQFEKJRRJYXVRNUFWNMPMIYBCQCJNSLNHIHOESEVNFMBKPPQTWQXQMCKIMQNPGOOTKNJDBKKHTWDUSJJGTSFJJLQ',
109
+ decoded: 'HOWOTHERWISETHEKINGSIRHATHLAIDTHATINADOZENPASSESBETWEENYOURSELFANDHIMHESHALLNOTEXCEEDYOUTHREEHITSHEHATHLAIDONTWELVEFORNINEANDITWOULDCOMETOIMMEDIATETRIALIFYOURLORDSHIPWOULDVOUCHSAFETHEANSWERBYTHELORDHORATIOTHESETHREEYEARSIHAVETAKENANOTEOFITTHEAGEISGROWNSOPICKEDTHATTHETOEOFTHEPEASANTCOMESSONEARTHEHEELOFTHECOURTIERHEGAFFSHISKIBETHYSTATEISTHEMOREGRACIOUSFORTISAVICETOKNOWHIM'
110
+ }
111
+
112
+ },
113
+ {
114
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v26_en.html'],
115
+ model: 'I',
116
+ setup: {
117
+ rotors: ['III', 'IV', 'I'],
118
+ plugs: 'EL ID YR QP FX HO KJ NS BV WU',
119
+ ringSettings: [10, 22, 8],
120
+ reflector: 'B'
121
+ },
122
+ message: {
123
+ key: 'OAK',
124
+ encoded: 'RXDVNGAFUCJOOJHUZZKLZLCIVQZQUJYGRAQSUQWSWFCGJXGDGWWQMTYTLLLGTLWVCSQQITTKGOEDMERMCMPERRYAZKEDRFSDKWVQUSMGFXLJFOWKIUMTJXKQDBHGPJUKQRTSBTZ',
125
+ decoded: 'GOODEVENSIRMAYONEBEPARDONDANDRETAINTHEOFFENCEHOWLONGHATHSHEBEENTHUSTHOUGHTANDAFFLICTIONPASSIONHELLITSELFSHETURNSTOFAVOURANDTOPRETTINESS'
126
+ }
127
+
128
+ },
129
+ {
130
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v26_en.html'],
131
+ model: 'I',
132
+ setup: {
133
+ rotors: ['III', 'I', 'II'],
134
+ plugs: 'EJ ZX TU KV MI DB NW GQ LR FO',
135
+ ringSettings: [4, 5, 7],
136
+ reflector: 'B'
137
+ },
138
+ message: {
139
+ start: 'OEC',
140
+ encoded: 'WCOJLTOXJZSYRDRGPLWJJOXWFCCISIRBMEHOKYWDFNJFWXCWATBJJTJLTMEQMWBIFXVIBJJOPAYKSUZIFATKZLMMVHNIYOPHBYKBAAHCYPKELSEWGKBHAHROMIGPBRYQXFCRJGUXWHFKBGTECDZDZLWVIHXKOFBXWJKETDLBLWKDTPPFUFKPKMROJHZMDDBHTKXSWMPNRYOVWEEUIMKYBGVSQJCFNBKKLVYZGKQQRTMMPTWJAMJQPGDCGHLUNQKSVWOAALTXS',
141
+ decoded: 'HOWDANGEROUSISITTHATTHISMANGOESLOOSEYETMUSTNOTWEPUTTHESTRONGLAWONHIMHESLOVEDOFTHEDISTRACTEDMULTITUDEWHOLIKENOTINTHEIRJUDGMENTBUTTHEIREYESANDWHERETISSOTHEOFFENDERSSCOURGEISWEIGHDBUTNEVERTHEOFFENCEAMINOTITHERIGHTOLDJEPHTHAHAHMYGOODLORDWHATHAVEISEENTONIGHTWHATGERTRUDE'
142
+ }
143
+
144
+ },
145
+ {
146
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v26_en.html'],
147
+ model: 'M3',
148
+ setup: {
149
+ rotors: ['IV', 'VII', 'I'],
150
+ plugs: 'NI RM AH VQ UL FD GS WY JE TX',
151
+ ringSettings: [23, 13, 3],
152
+ reflector: 'B'
153
+ },
154
+ message: {
155
+ start: 'HMP',
156
+ encoded: 'PDWBCHJGYPCHHUXNDVUGEZSYIUATENCFMYUIQPWIBBIELWXUNAWZNPVNKTBOJTHEDWDJJKQEOEPSMJBRGTWJGNURUXXEFYGJKUSHYPFZIDEWODCRKXFFLQKVLRLXNIACDAZEIFJXTLZXUSJRLQIDBJTIDUAFRJAYTSNFBJBXKVLASUZQMPCJJLCOZDMDIRPEJANYQCIUPLAPSMQMXXXHSMMNEDCSDDILZOWGPXVWKWKHKYLXEOYFHMNBPURLKA',
157
+ decoded: 'COMEHITHERGENTLEMENANDLAYYOURHANDSAGAINUPONMYSWORDNEVERTOSPEAKOFTHISTHATYOUHAVEHEARDSWEARBYMYSWORDAREYOUFAIRNOMOREBEDONEWESHOULDPROFANETHESERVICEOFTHEDEADTOSINGAREQUIEMANDSUCHRESTTOHERASTOPEACEPARTEDSOULSNIGGARDOFQUESTIONBUTOFOURDEMANDSMOSTFREEINHISREPLY'
158
+ }
159
+ },
160
+ {
161
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v26_en.html'],
162
+ model: 'M3',
163
+ setup: {
164
+ rotors: ['VI', 'IV', 'II'],
165
+ plugs: 'QZ DK LA MX ET BG VO SH YP WJ',
166
+ ringSettings: [4, 15, 21],
167
+ reflector: 'B'
168
+ },
169
+ message: {
170
+ key: 'ASA',
171
+ encoded: 'URVTSTZATDUFQLGIUJKVRRVJZHSHDOGEKHREOYECTDTBUYZACWNGMHTUGWNUIUJMKHQQAPAKQIQYDHXWBRILLAURPOYTGNYUDANCLJCKSIPCJWLCLBHVXKNNRXPHHJUQJMRBZZASHQLCLQMMTYOA',
172
+ decoded: 'EXCHANGEFORGIVENESSWITHMENOBLEHAMLETMINEANDMYFATHERSDEATHCOMENOTUPONTHEENORTHINEONMEHORATIOIAMDEADTHOULIVESTREPORTMEANDMYCAUSEARIGHTTOTHEUNSATISFIED'
173
+ }
174
+ },
175
+ {
176
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v26_en.html'],
177
+ model: 'M3',
178
+ setup: {
179
+ rotors: ['II', 'I', 'VII'],
180
+ plugs: 'BL SK WD FN HZ IX QU EJ PC OM',
181
+ ringSettings: [19, 20, 14],
182
+ reflector: 'B'
183
+ },
184
+ message: {
185
+ key: 'HRO',
186
+ encoded: 'LJVBCURJWLPLFSYKZNBEXTUHTPCWRQTOKBRBCDMAMQCDMIXIOMVCVKBVDXMXIJVELDNRBXPWCCICPEHAXTVZYV',
187
+ decoded: 'WHYONEFAIRDAUGHTERANDNOMORETHEWHICHHELOVEDPASSINGWELLYOUTOLDUSOFSOMESUITWHATISTLAERTES'
188
+ }
189
+ },
190
+ {
191
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'https://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-m4_v16_en.html'],
192
+ model: 'M4',
193
+ setup: {
194
+ rotors: ['Beta', 'II', 'VII', 'V'],
195
+ plugs: 'YL SF VO AI BX WC KD MT JN PH',
196
+ ringSettings: [9, 18, 12, 8],
197
+ reflector: 'Thin-B'
198
+ },
199
+ message: {
200
+ key: 'MKDM',
201
+ encoded: 'KEKZCUAFFTWOHZURZPCTWWCICFOGAXBTCTPHMAIFXEEBAYFCQOOAGFKWAHOFEUYWBUEZIWADYATCTLEOUGRPSQDTBZCHIGQGBCXBRYDSGFDBEURKHUKFUYHALYROROKIZWFTPEJJUIRGBIQFGPLGWXJPMNPSEHYSGITZCGSMZXVVJCRXZQWGMOKNBTYVRMYHPWMEXGPUSHYQEWIDZTITRUFXLPYAQUCZVDCAVCMWGGQMXEQDFPTBLOJDEGTGKXXWFIGASTKMLWHFOPPXNBVDYUHDNOJNATOTMWLJGLSTJXDDHGKOBZCPNTPLPKINICEWVJUUNVKDYWGVFFJE',
202
+ decoded: 'YOUNGFORTINBRASWITHCONQUESTCOMEFROMPOLANDTOTHEAMBASSADORSOFENGLANDGIVESTHISWARLIKEVOLLEYNOUPSWORDANDKNOWTHOUAMOREHORRIDHENTWHENHEISDRUNKASLEEPORINHISRAGEORINTHEINCESTUOUSPLEASUREOFHISBEDATGAMINGSWEARINGORABOUTSOMEACTTHATHASNORELISHOFSALVATIONINTTHENTRIPHIMTHATHISHEELSMAYKICKATHEAVENANDTHATHISSOULMAYBEASDAMNDANDBLACKASHELLWHERETOITGOES'
203
+ }
204
+ },
205
+ {
206
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'https://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-m4_v16_en.html'],
207
+ model: 'M4',
208
+ setup: {
209
+ rotors: ['Gamma', 'VIII', 'VI', 'V'],
210
+ plugs: 'RX VA HE ST QL UK PG DB JZ OC',
211
+ ringSettings: [7, 14, 19, 26],
212
+ reflector: 'Thin-C'
213
+ },
214
+ message: {
215
+ key: 'IBFP',
216
+ encoded: 'PUEDVIRAVXYTNFBCUGMSVLVZYRREYMERJCSCKSCACKBZNZNNLYFAAUIKFRMIIUPWBFSFWVKRYLMKHXKXGJXRFQJNRSLSFGFBBKEVQPWCLKUBMNUUKWIYSUQXAXOGZKSBVCRXMIMNJKOXCUBFXSGYQVUXSAWOFQVDQIYTULXKZXEKCQGXQXFVADTSSVZZGQMHBBMJQBYLUWAJELOIYICWTDZQAQYPBCAGKHTICILGFKMNRRXGRUTADCIOCQBXHODIRWXARKENICHVMVHWRRIVWWDCG',
217
+ decoded: 'IFYOUDOMEETHORATIOANDMARCELLUSTHERIVALSOFMYWATCHBIDTHEMMAKEHASTETHEGREATMANDOWNYOUMARKHISFAVOURITEFLIESTHEPOORADVANCEDMAKESFRIENDSOFENEMIESOWONDERFULGOODMYLORDTELLITFORGIVEMETHISMYVIRTUEFORINTHEFATNESSOFTHESEPURSYTIMESVIRTUEITSELFOFVICEMUSTPARDONBEGYEACURBANDWOOFORLEAVETODOHIMGOOD'
218
+ }
219
+ },
220
+ {
221
+ verified: ['https://cryptii.com/pipes/enigma-machine', 'https://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-m4_v16_en.html'],
222
+ model: 'M4',
223
+ setup: {
224
+ rotors: ['Gamma', 'II', 'VIII', 'VII'],
225
+ plugs: 'SA LM XY CV ER GB KT PJ WH DU',
226
+ ringSettings: [25, 21, 11, 2],
227
+ reflector: 'Thin-B'
228
+ },
229
+ message: {
230
+ key: 'TQXV',
231
+ encoded: 'NWWKWEOXQKVGAFEMANRTAEGIZIROXKLPEFTWZJEHQVXDIDDXYIDASSXZJUSZTDHEUKPUVNTOONBYOZJAGCMTEFYHCSJCHOHGMXWHLZAVCBRVNGAMTFUNZNVWPAWBXUICZCYKDBSKJZBQPOMBJCJVKSIGJXAXBDZLYAGPSVATCLXXEQVIWUKBOP',
232
+ decoded: 'COMEHITHERGENTLEMENANDLAYYOURHANDSAGAINUPONMYSWORDNEVERTOSPEAKOFTHISTHATYOUHAVEHEARDSWEARBYMYSWORDSEEITSTALKSAWAYSTAYSPEAKSPEAKICHARGETHEESPEAKTISGONEANDWILLNOTANSWERISHALLOBEYMYLORD'
233
+ }
234
+ }
235
+ ]
236
+ }